这是代码段
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 :(得分:2)
什么是XHR
readyState=3
?
readyState
的值为3
,表示当前状态为LOADING
。
那么该状态的
readyStateChange
事件何时被解雇?
每当异步请求切换到LOADING状态时。特别是triggered by:
一旦接收到响应实体主体的第一个字节(或更多)[...]或者如果没有响应实体主体[...] 然后切换到LOADING状态。
因此,当接收到响应的字节时,浏览器可以使用readyState 3自由触发此事件。有些触发它更频繁(在每个缓冲区冲洗时),其他不要。 readystatechange
事件的The spec even says:
由于历史原因,
readyState
属性在某些看似随意的时间发生了变化。