我有一系列的承诺,我需要等到所有的承诺得到满足或拒绝。 这就是我正在做的事情
var = [promiseA,promiseB,promiseC]
Promise.all(promises.map(function(promise) {
return promise.reflect();
})).each(function(inspection) {
if (inspection.isFulfilled()) {
console.log("A promise in the array was fulfilled with",inspection.value());
} else {
console.error("A promise in the array was
rejected with", inspection.reason());
}
})
上面的代码打印了每个promise的履行或拒绝值。在我的情况下,每个promise都会返回成功或错误json。我需要使用像.then()这样的函数来获取所有成功的json值。
当我尝试使用.then
获取值时Promise.all(promises.map(function(promise) {
return promise.reflect();
})).then(data){
//_settledValue gives me the json value either success json or error json
console.log('data[0]::::’+JSON.stringify(data[0]._settledValue));
}.
我将如何忽略错误json并仅在此处取得成功json? 任何人都可以帮我解决这个问题吗?
答案 0 :(得分:3)
使用其他建议的Array.filter
或Bluebird.filter
。
Bluebird.all(promises.map(function(promise) {
return promise.reflect();
}))
.filter(function(promise) {return promise.isFulfilled();})
// or .then(promises => promises.filter(/*...*/))
.then(function (data) {
// only successful ones are available here...
});