【发布时间】:2019-05-27 14:51:21
【问题描述】:
我最近一直在阅读有关 async/await 并使用 try 和 catch 处理 Promise 拒绝的内容,并将其应用于我的一些旧代码。
我有以下:
async function() {
try {
await Promise.all([some functions]);
doIfNoError();
} catch (error) {
console.log(error);
}
我传递给 Promise.all 的函数都遵循以下格式:
async function() {
some code
if (some condition) {
return true
} else {
throw false
}
}
我打算如果传递给 Promise.all 的任何函数拒绝,就会显示拒绝。如果没有任何函数拒绝,则 doIfNoError 应该触发。但是,doIfNoError 有时会在不应该触发时触发,并且我收到错误“Unhandled Promise Rejection”。
【问题讨论】:
-
也许你的
doIfNoError函数正在做一些引发错误的工作。你能在这里添加一个真实的例子吗? -
还有你在 Promise.all 中传递的函数,尝试传递一个 Promise。它将拒绝或解决承诺,而不仅仅是返回或抛出一些值。例如:Promise.resolve(true) 或 Promise.reject(false)
-
您必须调用您的函数并将数组中的结果承诺传递给
Promise.all,而不是函数本身。 -
请贴出实际代码。您的
try/catch代码很好,它必须是调用或async functions 的内容。 -
await Promise.all([some functions])应该是await Promise.all([some promises]);
标签: javascript node.js async-await