gpt4 book ai didi

javascript - 防止 Promise.all 在第一次错误时拒绝的规范方法是什么?

转载 作者:行者123 更新时间:2023-11-30 19:33:38 26 4
gpt4 key购买 nike

我有以下代码

await doAllCats();
await doAllDogs();
console.log("Finished processing Cats and Dogs ")

function doAllCats() {
let promiseArray = [];
for(let cat of cats) {
promiseArray.push(doOneCat(cat));
}
return Promise.all(promiseArray);
}
function doOneCat(cat) {
let promise = doSomeAsyncStuffWithACat(cat);
promise.catch((err)=> {
console.error("there was a problem with "+cat+" but processing should continue as normal for the other cats and dogs");
})
return promise;
}

当所有猫和狗都成功时,它工作正常。然而,有时一只猫会失败,当这种情况发生时,我会在最顶层得到一个异常。处理 cat 失败的代码在 doOneCat 中并且运行正常。但是,失败的 promise 仍在 promiseArray 中,因此我过早地“完成”了。

防止 Promise.all 在第一个异常时拒绝的最简单/规范的方法是什么?

最佳答案

只需返回捕获的 Promise,这样拒绝就不会冒泡到 Promise.all(然后它不会退出):

 return promise.catch((err) => {
console.error("there was a problem with "+cat+" but processing should continue as normal for the other cats and dogs");
return /*some flag that indicates that this one did throw */;
});

以后会有Promise.allSettled解决那个确切的案例。

关于javascript - 防止 Promise.all 在第一次错误时拒绝的规范方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56175425/

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