gpt4 book ai didi

javascript - 过滤/恢复 Promise.all 结果

转载 作者:行者123 更新时间:2023-11-30 08:29:43 26 4
gpt4 key购买 nike

例如:

function myFunc(args ...){
...
return Promise.all(myPromisesArray)
}

如果myPromisesArray内的promise失败,我只会在返回值中得到拒绝原因。

有没有办法恢复所有其他解析值?

最佳答案

如果您使用的是 Q,则有一个名为 Q.allSettled 的函数这基本上满足了您的要求。

否则,这个简单的函数将为您提供所有个 promise 的结果,并告诉您是成功还是失败。然后,您可以对成功或失败的 promise 执行任何您需要执行的操作。

/**
* When every promise is resolved or rejected, resolve to an array of
* objects
* { result: [ Promise result ], success: true / false }
**/
function allSettled(promises) {
return Promise.all(
promises.map(
promise => promise.then(
// resolved
(result) => ({ result: result, success: true }),
// rejected
(result) => ({ result: result, success: false })
)
)
);
}

// example usage:
const one = Promise.resolve(1);
const two = Promise.reject(2);
const three = Promise.resolve(3);

allSettled([ one, two, three ])
.then((results) => {
console.log(results[0]); // { result: 1, success: true }
console.log(results[1]); // { result: 2, success: false }
console.log(results[2]); // { result: 3, success: true }
});

关于javascript - 过滤/恢复 Promise.all 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39809057/

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