2013-11-03 42 views
3

下面的代碼片段dos XHR的「readyState == 3」是如何工作的?

 
xhr.onreadystatechange = function(){ 
    if(xhr.readyState == 3){ 
     console.log("readyState response length " + xhr.response.length); 
    } 
} 

和控制檯是

 
readyState response length: 3854 
readyState response length: 33214 
readyState response length: 35296 

我不知道什麼是onreadystatechange射擊的時機做,但這似乎與響應的大小了一下,怎麼做這行得通?

+0

它有什麼不同?在這種狀態下你不能訪問'responseText'。 – Barmar

回答

2

什麼是XHR readyState=3

具有readyState3的值則表示當前狀態爲LOADING

那麼什麼時候該狀態的readyStateChange事件發射?

每當異步請求切換到LOADING狀態時。也就是說特別triggered by

一旦響應實體主體的第一個字節(或多個)已被接收[...]或如果沒有響應實體體[...] 然後切換到加載狀態。

因此,當瀏覽器接收到響應的字節時,它們可以用readyState 3自由引發此事件。一些更經常地觸發它(在每個緩衝區刷新時),其他的不用。 The spec even saysreadystatechange事件:

在由於歷史原因,一些看似隨意的次readyState屬性的變化。

相關問題