fail: ({ errMsg }) => {
// TODO 规范错误
if (errMsg.indexOf(‘abort’) !== -1) {
_triggerEvent.call(this, ‘abort’)
} else if (errMsg.indexOf(‘timeout’) !== -1) {
_triggerEvent.call(this, ‘timeout’)
} else {
_triggerEvent.call(this, ‘error’, errMsg)
}
_triggerEvent.call(this, ‘loadend’)
}
##这里说一下碰到的一个微信小游戏的坑
用XMLHttpRequest访问超时时 真机上返回的errMsg为 “request:fail 请求超时。”
而在微信开发者工具返回的errMsg是"request:fail timeout"
这导致了上面的代码在微信开发者工具上能正常进入ontimeout而在真机只能进入onerror
(这里不排查是因为开发者工具的调试库和真机运行库不是同个版本导致的)
最后我只能在调用时吧ontimeout和onerror同时加上