0
function myFunc(args ...){
...
return Promise.all(myPromisesArray)
}
如果內部myPromisesArray
一個承諾失敗了,我只會在返回值的拒絕理由。
有沒有辦法恢復所有其他解決的值?
function myFunc(args ...){
...
return Promise.all(myPromisesArray)
}
如果內部myPromisesArray
一個承諾失敗了,我只會在返回值的拒絕理由。
有沒有辦法恢復所有其他解決的值?
如果你使用Q,那麼有一個叫Q.allSettled
的函數,基本上可以滿足你的要求。
否則,這個簡單的函數會給你的所有承諾的結果,並告訴你是成功還是失敗。然後,你可以做任何你需要做的承諾成功或失敗。
/**
* 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 }
});
你控制你正在執行的承諾? – synthet1c
結果呢?不,這是任意的。 –
不,我的意思是你正在寫承諾的代碼。如果你不調用拒絕函數並返回結果。承諾一旦失敗就會失敗並立即停止執行 – synthet1c