【发布时间】:2021-12-22 10:46:49
【问题描述】:
我正在使用 nodejs request 包(2.88 版本)和 node v10.24.1
如果没有指定 url,下面的 Promise 不会处理错误。我收到了UnhandledPromiseRejectionWarning,从request package 源我可以看到针对该案例引发的异常。
如果我删除 async 关键字一切正常,并且拒绝处理。
return new Promise(async (resolve, reject) => {
request(uri: url).on('error', err => {
reject();
}).on('response', response => {
resolve();
});
});
你能解释一下发生了什么吗?请求的异常可能在拒绝实际触发之前完成。请提供任何详细信息。
【问题讨论】:
-
您传递给
new Promise()的函数应该永远是异步的,但如果是......我不明白为什么会失败。行为应该是相似的。 -
所以也许您可以分享一个更完整的示例来演示错误处理不起作用。但只是重复一遍,如果这只是一个学术练习,那就太酷了!但是不要在这里使用异步。
-
@Evert,外部函数是异步的。
error上的所有内容都处理得很好,但如果没有指定 url,它就会失败。如果我只是在 promise 中添加 try/catch,它也可以正常工作,但我意识到这是错误的,不应该那样。 -
啊,这很有道理!我会回答这个问题。