Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【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エンドポイントにリクエストを送信し、それぞれのリクエストの結果を後で分析したり、表示したりするようなシナリオで利用できます。

公式リファレンス: Promise.allSettled()

構文(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 されます。

関連コンテンツ