gpt4 book ai didi

javascript - 我能保证 onreadystatechange 最终总是会被 readyState == 4 调用吗?

转载 作者:行者123 更新时间:2023-11-29 20:15:19 25 4
gpt4 key购买 nike

我在嵌入式设备上使用 XMLHttpRequest,该设备提供 API 的非标准扩展,以允许在请求完成后手动清理资源。

我是否可以假设,对于所有情况(成功或其他情况,例如 404、DNS 查找失败等),对 send() 方法的调用最终将导致我的 onreadstatechange 处理程序被 readyState == 4 调用?

或者,换句话说,假设此实现的 XHR 在所有其他方面都与标准浏览器的行为相似,那么以下代码是否总是会导致调用 destroy() 方法?

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() 时,状态可能会在 UNSENT (3.6.5) 处终止。

即使在“正常”操作期间,如果发生错误并抛出异常,则状态可能会在 DONE 之外的其他地方终止。

阅读the spec's section on states获取更多信息。

关于javascript - 我能保证 onreadystatechange 最终总是会被 readyState == 4 调用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7278445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com