【Node.js24.x】Promise::allSettled()メソッドの使い方
allSettledメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
allSettledメソッドは、複数のPromiseが全て完了(成功・失敗を問わず)するまで待機し、それぞれの結果を返すメソッドです。このメソッドは、Promiseのイテラブルを引数として受け取り、その全てのPromiseが完了した時点で解決される新しいPromiseを返します。
Promise.allとは異なり、allSettledは、渡されたPromiseのいずれかが拒否された場合でも即座に拒否されることはありません。全てのPromiseが完了するまで待機し、個々の結果を報告します。
返されるPromiseが解決されると、各Promiseの結果を表すオブジェクトの配列が返されます。各オブジェクトは、Promiseが成功した場合は { status: 'fulfilled', value: 成功値 } の形式を、失敗した場合は { status: 'rejected', reason: 失敗理由 } の形式を取ります。
このため、特定の非同期タスクの成否に関わらず、全てのタスクの結果を個別に取得し、後続処理に利用する際に有用です。複数のAPI呼び出しを並行実行し、一部が失敗しても他の結果を確認したい場面などで活用されます。
構文(syntax)
1Promise.allSettled([ 2 Promise.resolve('成功した値'), 3 Promise.reject(new Error('失敗した理由')), 4 new Promise(resolve => setTimeout(() => resolve('非同期の成功'), 100)) 5]) 6 .then(results => { 7 console.log(results); 8 });
引数(parameters)
iterable
- iterable: Promiseオブジェクト、またはPromiseオブジェクトに解決される値のイテラブル (配列など)
戻り値(return)
Promise<Array<{ status: 'fulfilled'; value: any } | { status: 'rejected'; reason: any }>>
Promise.allSettled は、複数の Promise の実行結果をすべて保持した配列を返す Promise を生成します。各要素は Promise の成功(fulfilled)または失敗(rejected)と、その結果(valueまたはreason)を示します。