我注意到,在当前的 chrome 上(不确定其他浏览器如何处理这个问题),如果我忘记启动 api 服务器,axios 不会解析或拒绝。我相信这是因为在网络级别, onload 永远不会在请求时被调用,但 onerror 会被调用,并且查看https://github.com/mzabriskie/axios/blob/master/lib/adapters/xhr.js我们不知道根本不处理 onerror。
有什么理由不添加onerror
处理程序?如果没有的话,很乐意尝试 PR。
我注意到,在当前的 chrome 上(不确定其他浏览器如何处理这个问题),如果我忘记启动 api 服务器,axios 不会解析或拒绝。我相信这是因为在网络级别, onload 永远不会在请求时被调用,但 onerror 会被调用,并且查看https://github.com/mzabriskie/axios/blob/master/lib/adapters/xhr.js我们不知道根本不处理 onerror。
有什么理由不添加onerror
处理程序?如果没有的话,很乐意尝试 PR。
是的,这是错误的。很高兴接受 PR。
乍一看似乎request.onload = request.onerror = function () {...
可行,因为我们已经在处理了,if (!request)
会看一下。
我不知道这是否有效,因为request
即使有错误,它仍然存在。应该和节点适配器正在做的事情一样简单。
request.onerror = function(error) {
reject(error);
};
@mzabriskie 哦,所以你宁愿拒绝错误,而不是状态为 0 的响应对象?
我想是这样。主要是为了与鼻子适配器进行奇偶校验,但也没有任何响应数据可返回。而错误可以提供有关发生的情况的有意义的信息。
所以看起来 onerror 实际上并没有返回错误,而是一个进度事件。至少在http://localhost:5000
api 没有实际运行的情况下是这样。
我认为抛出该事件没有意义,因为它甚至不是错误对象。根据:http://stackoverflow.com/questions/4844643/is-it-possible-to-trap-cors-errors至少在cors错误的情况下,实际的错误对于你的JS代码来说是不可用的(只是得到记录到控制台)。
所以我想我们又回到了:要么以 0 状态拒绝,要么只是抛出诸如new Error('Unknown XHR error')
想法之类的东西?
读了一下之后,看起来onerror
只有在出现网络错误时才会被调用。我们就扔new Error('Network error');
:+1:同意,完成:#205
感谢您的帮助!
我也遇到这个问题,你的计划什么时候发布这个修复?
将尝试在本周末发布。
此修复程序在 0.9.1 中可用
我收到“网络错误”,但服务器响应“500 内部服务器错误”。
如果此错误响应能够更明确以实现更好的应用程序处理,那就太好了。这可能吗?