javascript - 无法捕获来自第 3 方库的未处理的 Promise 拒绝

标签 javascript node.js promise es6-promise

我正在使用第三部分库在我的 Nodejs 后端代码中进行异步调用。这个电话中有一个未处理的 promise 拒绝,我很难捕捉到。 (它导致我的 Node 应用程序崩溃。)

根据传递的输入,预计有时会失败:

exports.getSomeData = (input) => {
    console.log('GETTING DATA...')
    return ThirdPartyLib.makeAsyncCall(input).then((result) => {
        console.log('SUCCESS');
        return result;
    },(rejection) => {
        console.log('REJECTED');
        return {};
    }).catch(error => {
        console.log('ERROR');
        return {};
    });
}

但是失败时不会打印任何 REJECTED/ERROR 消息。我只看到来自库的控制台消息:Unhandled RFC: Promise 并且我的应用程序崩溃了。

我在处理不愉快的道路时错过了什么吗?

库代码是否有可能执行上面无法捕获的操作?

最佳答案

Is it possible for the library code to do something that the above WOULDN'T catch?

当然,它只需要创建一个 Promise(例如,通过调用异步函数),而不将其链接到 Promise 链中(也称为不等待它):

  async makeAsyncCall(data) {
    Promise.reject("Possible");
  }

所以,是的,您正在使用的库应该等待那个分离的 promise ,或者应该附加一个错误处理程序(并处理/故意忽略错误)。这不是你的错。

关于javascript - 无法捕获来自第 3 方库的未处理的 Promise 拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56225463/

相关文章:

javascript - 使线条跟随形状的轮廓

python - 将 10,000 个 JSON 文件(总共 30GB)插入 MongoDB 的最佳方式

http - 什么会导致 Nativescript angular2 中的 promise 失败?

javascript - JS事件循环优先级

javascript - 设置 env 变量的 Node 命令适用于 Linux 和 Mac,但不适用于 Windows

JavaScript 卡在缓存中

javascript - 未捕获的类型错误 : Object #<NodeList> has no method 'addEventListener'

node.js - writeFileSync 上的 ENOENT 在 repl 上工作在 gulp-asset-manifest 上失败

javascript - Node.js 在对象创建后不会终止

Javascript Protractor 比较 promise 总和