Javascript 我能保证onreadystatechange最终总是在readyState==4时被调用吗?
我在一个嵌入式设备上使用XMLHttpRequest,该设备提供API的非标准扩展,允许在请求完成后手动清理资源 我是否可以假设,对于所有情况(成功或其他情况,例如404、DNS查找失败等),对send()方法的调用最终将导致使用readyState==4调用onreadstatechange处理程序 或者,换一种说法,假设此实现的XHR在所有其他方面的行为与标准浏览器的行为类似,那么下面的代码是否总是会导致调用destroy()方法Javascript 我能保证onreadystatechange最终总是在readyState==4时被调用吗?,javascript,xmlhttprequest,Javascript,Xmlhttprequest,我在一个嵌入式设备上使用XMLHttpRequest,该设备提供API的非标准扩展,允许在请求完成后手动清理资源 我是否可以假设,对于所有情况(成功或其他情况,例如404、DNS查找失败等),对send()方法的调用最终将导致使用readyState==4调用onreadstatechange处理程序 或者,换一种说法,假设此实现的XHR在所有其他方面的行为与标准浏览器的行为类似,那么下面的代码是否总是会导致调用destroy()方法 var xhr = new XMLHttpRequest()
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function () {
if (xhr.readyState == 4) {
callback(xhr.responseText);
if (xhr.destroy) { // must call this to prevent memory leak
xhr.destroy();
}
}
};
xhr.open(method, url, true);
xhr.send(null);
没有
在某些情况下,例如在调用abort()
时,状态可能在未发送时终止(3.6.5)
即使在“正常”操作期间,如果发生错误并引发异常,则状态可能会在DONE
之外的某个位置终止
阅读了解更多信息