XHR“readyState == 3”如何工作?

时间:2013-11-03 06:01:44

标签: javascript xmlhttprequest

这是代码段

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触发的时间是什么,它似乎与响应的大小有关,它是如何工作的?

1 个答案:

答案 0 :(得分:2)

  

什么是XHR readyState=3

readyState的值为3,表示当前状态为LOADING

  

那么该状态的readyStateChange事件何时被解雇?

每当异步请求切换到LOADING状态时。特别是triggered by

  

一旦接收到响应实体主体的第一个字节(或更多)[...]或者如果没有响应实体主体[...]   然后切换到LOADING状态。

因此,当接收到响应的字节时,浏览器可以使用readyState 3自由触发此事件。有些触发它更频繁(在每个缓冲区冲洗时),其他不要。 readystatechange事件的The spec even says

  

由于历史原因,readyState属性在某些看似随意的时间发生了变化。