3

这是代码片段

xhr.onreadystatechange = 函数(){
   如果(xhr.readyState == 3){
      console.log("readyState 响应长度" + xhr.response.length);
   }
}

控制台是

readyState 响应长度:3854
readyState 响应长度:33214
readyState 响应长度:35296

我不知道onreadystatechange触发的时间是什么,这似乎与响应的大小有关,它是如何工作的?

4

1 回答 1

3

什么是 XHR readyState=3

具有它readyState的值3意味着当前状态是LOADING

那么什么时候readyStateChange触发该状态的事件?

每当异步请求确实切换到 LOADING 状态时。这尤其是由以下触发的

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

因此,浏览器在收到响应字节时可以使用 readyState 3 自由触发此事件。有些更频繁地触发它(在每次缓冲区刷新时),其他的则不会。规范甚至readystatechange事件说:

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

于 2013-12-05T22:48:00.460 回答