Bluebird 3.4.1承诺, Chrome 56, Babel 6.23.1
假设:
async login() {
try {
let response = await this.authservice.login('invalid-credentials');
} catch (error) {
}
}
上面的代码模拟了一个带有json对象的401响应错误,该对象具有从服务器返回的特定错误消息,该消息确实触发了catch语句。但是,我不想为每个catch语句处理错误,而是希望有一个全局错误处理程序。
在非异步函数中,我使用window.onerror
事件,该事件按预期工作。但是,这不适用于异步功能。
我还为
添加了活动window.addEventListener('unhandledrejection')
window.addEventListener('rejectionhandled')
这些事件不会触发上述情况(它们会触发其他情况)。相反,bluebird会返回“警告承诺被拒绝且出现非错误:[object Response]”。
this.authservice.login
正在使用一个使用标准promise语法和异步函数的库。
如果我在catch语句中抛出一个新错误,我可以得到错误,最终冒泡到unhandledrejection事件。但是上面的函数是从另一个函数调用的,我必须在两个函数中抛出一个错误,以便触发全局的未处理的反射。
简而言之,我正在尝试为所有async / awaits和promises创建一个全局错误处理程序。