ホームページ >ウェブフロントエンド >jsチュートリアル >一部の約束が失敗したとしても、すべての約束が完了するまでどのように待つことができますか?
失敗に関係なく、すべての Promise を待機します
失敗する可能性のあるネットワーク リクエストを行う一連の Promise があるシナリオでは、一部の Promise が失敗したとしても、すべての Promise が完了するまで待ってから続行することを好む場合があります。
組み込みPromise.allSettled メソッドは、簡単な解決策を提供します。
Promise.allSettled([promise]).then(([result]) => { // Reached regardless of outcome // {status: "fulfilled", value: 33} });
Promise.allSettled の導入前は、reflect 関数を使用して同じ結果を達成できました。
const reflect = (p) => p.then( (v) => ({ v, status: "fulfilled" }), (e) => ({ e, status: "rejected" }) ); reflect(promise).then((v) => { console.log(v.status); });
代わりに、リフレクト関数を拡張して、Promise の配列を操作します:
function reflect(promises) { return Promise.all(promises.map((p) => { return p.then((v) => ({ v: v, status: "fulfilled" }), (e) => ({ e: e, status: "rejected" })); })); } reflect(promises).then((results) => { var success = results.filter((x) => x.status === "fulfilled"); });
これらを利用することでこのテクニックを使用すると、ネットワーク障害を適切に処理し、一部の Promise が成功したかどうかに関係なく、コードが意図したとおりに実行され続けることを保証できます。
以上が一部の約束が失敗したとしても、すべての約束が完了するまでどのように待つことができますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。