如何为es2017 javascript async / await函数创建全局错误处理程序?

时间:2017-02-24 21:23:33

标签: javascript async-await bluebird

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创建一个全局错误处理程序。

0 个答案:

没有答案