[英]Can't catch an unhandled Promise rejection from 3rd party library
我正在使用第三方库在我的nodejs后端代码中进行异步调用。 有一个未处理的承诺拒绝来自这个电话我无法抓住。 (它关闭了我的节点应用程序。)
根据传递的输入,有时会失败:
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
消息打印出来。 我只是看到来自lib的控制台消息: Unhandled rejection at: Promise
和我的应用程序关闭。
我是否错过了处理不快乐路径的方式?
库代码是否可以执行以上操作无法捕获的内容?
库代码是否可以执行以上操作无法捕获的内容?
当然,它只需要创建一个Promise(例如通过调用异步函数)而不将它链接到promise链(也就是没有await
它):
async makeAsyncCall(data) {
Promise.reject("Possible");
}
所以,是的,你正在使用的库要么等待分离的promise,要么它应该附加一个错误处理程序(并处理/故意忽略错误)。 这不是你的错。
除了双拒绝处理程序(这是没有意义的,只需使用catch()
),您的代码应该正常工作。
因此,鉴于您看到了该错误,这意味着您使用的库存在错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.