【问题标题】:NodeJS: Auto-catch errors in Promise and call rejectNodeJS:在 Promise 和呼叫拒绝中自动捕获错误
【发布时间】:2017-02-02 11:04:48
【问题描述】:

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

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

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

有没有办法使用错误处理程序自动尝试/捕获代码中的每个 Promise?我不想用 try/catch 块包围我的 Promises 的主体,只是为了将来能够更容易地找到此类错误。

提前感谢您的意见!

【问题讨论】:

    标签: javascript node.js es6-promise


    【解决方案1】:

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

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

    但是,您确实应该避免使用Promise constructor antipattern!使用

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

    【讨论】:

    • 这只是为了简化目的,我对证明“反模式”的承诺结果进行了更多处理。
    • 不,反模式没有理由。只需执行.then(processing),其中processing 是一个接受promise 结果并计算新返回值的函数。处理中的错误很可能是您没有收到任何错误消息的实际原因。
    • 他们不是,问题在于处理我自己的 promise 方法的方法的 catch 方法。不过谢谢你的意见。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-21
    • 2012-06-30
    • 2019-01-04
    • 2013-02-01
    • 1970-01-01
    • 2014-01-05
    • 2017-02-05
    相关资源
    最近更新 更多