【JavaScript ECMAScript】Promise::Promise.allSettled静的メソッドの使い方
Promise.allSettled()静的メソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
Promise.allSettled()メソッドは、複数のPromiseオブジェクトが全て完了(成功または失敗)するのを待ち、その結果をまとめて取得するメソッドです。このメソッドは、Promiseオブジェクトのイテラブル(例えば配列)を引数として受け取ります。
戻り値として、新しいPromiseを返します。この新しいPromiseは、引数で渡された全てのPromiseが成功または失敗のいずれかの状態で完了した後に解決(fulfilled)されます。解決された際には、各Promiseの結果を示すオブジェクトの配列が渡されます。配列の各要素は、元のPromiseの完了状態に応じて2つの形式のいずれかをとります。Promiseが成功した場合は、{status: "fulfilled", value: 成功時の値}というオブジェクトになり、失敗した場合は、{status: "rejected", reason: 失敗理由}というオブジェクトになります。
このメソッドの大きな特徴は、引数内のPromiseのどれか一つが失敗しても、残りのPromiseの完了を待ち、最終的に全ての結果を報告する点です。これは、Promise.all()メソッドが、一つでも失敗したPromiseがあるとすぐに全体のPromiseが拒否(rejected)されるのとは対照的です。
したがって、Promise.allSettled()は、個々の非同期処理の成否にかかわらず、全ての結果を一括で取得し、その全体像を把握したい場合に非常に役立ちます。例えば、複数のAPIエンドポイントにリクエストを送信し、それぞれのリクエストの結果を後で分析したり、表示したりするようなシナリオで利用できます。
構文(syntax)
1Promise.allSettled([ 2 Promise.resolve('Value 1'), 3 Promise.reject(new Error('Error occurred')), 4 new Promise(resolve => setTimeout(() => resolve('Value 2'), 100)), 5 'Just a string' 6]) 7 .then(results => { });
引数(parameters)
iterable
- iterable: Promiseオブジェクトのイテラブル(配列など)
戻り値(return)
Promise
Promise.allSettled() は、引数として渡されたイテラブル(配列など)内のすべての Promise が settled(fulfilled または rejected)した時点で fulfillment する Promise を返します。この返された Promise は、各 Promise の最終的な結果(fulfilled の場合は値、rejected の場合は理由)を格納した配列で fulfillment されます。