2012-02-22 77 views
1

我有一個條件必須在XMLHttpRequest用法之前和之後保留,但不是在期間。例如:如何捕獲XMLHttpRequest的所有終端

var running = false; // condition 

function go (callback) 
{ 
    running = true; // condition broken 

    var http = new XMLHttpRequest(); 
    http .open ("GET", url, true); 
    http .onreadystatechange = function() 
    { 
     if (4 == this .readyState) 
     { 
      try 
      { 
       callback (this .responseText); 
      } 
      catch (e) {} 

      running = false; // condition restored 
     } 
    } 
} 

我需要保證running總是最終成爲false,無論XMLHttpRequest如何發揮出來。

這是足夠的還是我需要檢查一些其他可能性?

回答

1

它看起來像這個檢查是足夠的(http://www.w3.org/TR/XMLHttpRequest/)。如果數據傳輸已完成或傳輸過程中出現問題,則readyState爲4。

確保您爲超時設置了一些合理的值(默認值爲0,即沒有超時)。