NodeJS:在Promise中自动捕获错误并调用拒绝

时间:2017-02-02 11:04:49

标签: javascript node.js es6-promise

我最近发现自己处于一种非常难以调试的状态。 想象一下以下非常简单的情况:

function somePromise() {
    return new Promise((resolve, reject) => {
        SomeModule.someMethod();
        AnotherModule.somePromise().then(resolve).catch(reject);
    });
}

从未调用Resolve,但我在控制台中没有收到错误 - 这很难调试!
事实证明我忘了要求SomeModule。在要求之后,代码按预期工作。

有没有办法通过错误处理程序自动尝试/捕获我的代码中的每个Promise?我不想用try / catch块来包围我的Promises的主体,以便能够在将来更容易地找到这样的错误。

提前感谢您的意见!

1 个答案:

答案 0 :(得分:3)

  

有没有办法通过错误处理程序自动尝试/捕获我的代码中的每个Promise?

这已由Promise构造函数隐式完成。如果回调同步抛出异常,则承诺将拒绝。

但是,你真的应该避免使用Promise constructor antipattern!使用

function somePromise() {
    SomeModule.someMethod();
    return AnotherModule.somePromise();
}