gpt4 book ai didi

javascript - 如果 iterable 中的项目导致拒绝,则强制继续执行 BlueBird Promise.each

转载 作者:行者123 更新时间:2023-11-30 11:49:48 36 4
gpt4 key购买 nike

所以我们想连续执行一系列 promise ,但在拒绝时继续。在下面的示例中,我们可以控制拒绝,但在用例中我们无法控制拒绝,因为它来自 Mongoose。

let Promise = require('bluebird');
let arr = [1,2,'a',4,5];

Promise.each(arr, function(item) {
return new Promise((resolve, reject) => {
if (typeof item === 'number') {
console.log(item);
resolve(item);
} else {
reject(new Error('item not number'));
}
});
})
.then(res => { console.log(res) })
.catch(err => {console.log('error ' + err.message)});

产生:

1

2

error item not number

如您所见,它在遇到数组中的字符串时退出。有没有办法让它一直延续到数组的末尾?

最佳答案

如果您对 promise 的解决没有任何控制权,您可以通过在 each 看到它们之前处理拒绝来轻松获得它:

Promise.mapSeries(arr, function(item) {
return somethingThatMightReject()
.catch(function(err) {
// ignore it? Log it?
return /*reasonable result*/; // continue anyway
});
})

(在 Promise.each 而不是 mapSeries 的情况下,您不必返回有意义的结果,而只需吞下错误)

关于javascript - 如果 iterable 中的项目导致拒绝,则强制继续执行 BlueBird Promise.each,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39810282/

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