3
我有一系列的承諾,我需要等到所有的承諾完成或被拒絕。 下面是我在做什麼如何有效地使用bluebird .all和.reflect?
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());
}
})
上面的代碼打印每個承諾的履行或拒絕值。在我的情況下,這裏的每個承諾返回一個成功或錯誤的JSON。我需要使用像.then()這樣的函數來獲取所有成功的json值。
當我嘗試使用。那麼
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獲得價值? 任何人都可以幫我想出這個嗎?
如果異步方法的返回結果並沒有真正拋出一個錯誤,但返回一個字符串,它說,這是一個錯誤,你可能必須處理自己通過檢查該字符串,因爲承諾可以」閱讀。想到'Array.filter'? – adeneo
['Promise.filter'](http://bluebirdjs.com/docs/api/promise.filter.html)? – Bergi