Promise.all()でfail-fastしたくないときの対処法
普通にPromise.all([ promise1, promise2 ])と書いてしまうと、どれか失敗したときに失敗しなかった実行結果を取得できないので、成否に関わらず全部実行し終えるまで待ってほしいときにどうするか問題について。
一番良さそうな回答から抜粋↓
code:promise.ts
const reflect = p => p.then(v => ({v, status: "fulfilled" }),
e => ({e, status: "rejected" }));
Promise.all(arr.map(reflect)).then(function(results){
var success = results.filter(x => x.status === "resolved");
});
もうちょっと洗練されたやつ↓
(追記)
→ Promise.allSettled() というのがあったりなかったりするらしい