gpt4 book ai didi

javascript - 将 Try/Catch 与 Promise.all 一起使用

转载 作者:太空宇宙 更新时间:2023-11-04 00:02:33 26 4
gpt4 key购买 nike

我最近一直在阅读有关 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 有时会在不应该触发的时候触发,并且我会收到错误“未处理的 promise 拒绝”。

最佳答案

实际上,try/catchPromise.all() 配合得很好

这里有一个片段来证明这一点:

async function p1() {
return 1;
}

async function boom() {
return new Promise((resolve, reject) => {
setTimeout(() => reject('boom'), 100)
})
}

// expected output: 'boom', ["value before Promise.all"]
async function asyncCall() {
let all = ['value before Promise.all'];

try {
all = await Promise.all([p1(), boom()]);
} catch(e) {
console.log("caught error:", e);
}

console.log(all);
}

asyncCall();

关于javascript - 将 Try/Catch 与 Promise.all 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53981230/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com