我正在使用第三部分库在我的 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/