1 回答
TA贡献1784条经验 获得超7个赞
xmlhttprequestnode.js的库没有完全正确地实现规范。
如果我们深入研究 github 上的代码,我们会看到以下代码行:
if (self.readyState === self.DONE && !errorFlag) {
self.dispatchEvent("load");
// @TODO figure out InspectorInstrumentation::didLoadXHR(cookie)
self.dispatchEvent("loadend");
}
所以load和loadend事件处理程序仅在没有错误时触发,与我们的观察一致
xhr.onloadend = function() {
// This should get logged, but it doesn't.
console.log( 'The request has completed.' );
};
只会在事件成功时记录。
我的建议是在.onerror()处理程序中手动触发事件,这确实有效。请记住,这是一个 3rd 方 node.js 模块,而不是原生模块。
就个人而言,我只是围绕 xmlhttprequest 编写了一个模拟.fetch()接口的小包装器。node.js 版本使用原生 node.jshttp库,客户端版本使用 xmlhttprequest。
这样我就可以.fetch()对前端和后端代码使用相同的API,让系统决定它是使用本机提取、xmlhttp 支持的提取还是 http 支持的提取。
添加回答
举报