【JavaScript ECMAScript】Promise::Promise.all静的メソッドの使い方
Promise.all()静的メソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
Promise.all()メソッドは、複数のPromiseオブジェクトを並行して実行し、その全てが成功するまで待機するメソッドです。非同期処理が複数存在し、それら全ての完了を待ってから次の処理に進めたい場合に非常に役立ちます。
このメソッドは、Promiseオブジェクトのイテラブル(例えばPromiseオブジェクトの配列)を引数として受け取ります。引数として渡された全てのPromiseが成功裏に解決された場合、Promise.all()メソッド自身が返すPromiseも解決状態になります。その解決値は、引数に渡されたPromiseが解決した値が、元の順序を保った配列として提供されます。
一方で、引数として渡されたPromiseのうち、どれか一つでも失敗(拒否)した場合、Promise.all()メソッドが返すPromiseは、最初に失敗したPromiseのエラー値をもって直ちに拒否されます。この際、他のPromiseの処理がまだ完了していなかったとしても、それらの結果を待つことなく処理は中断されます。
複数のデータ取得や並行処理が必要な場面で、全てのリソースが利用可能になったことを確認してから次のステップに進むようなシステム構築において、このメソッドは非同期処理の管理を簡潔かつ効率的に行える強力なツールです。非同期処理の結果をまとめて一元的に扱うための、JavaScriptにおける重要な機能の一つです。
構文(syntax)
1Promise.all([promise1, promise2, promise3]);
引数(parameters)
iterable
- iterable: Promise オブジェクトの配列、または Promise オブジェクトを生成できる値のイテラブル(例: 配列)
戻り値(return)
Promise
Promise.all()は、引数として渡されたイテラブル(配列など)内のすべてのPromiseが解決されるか、またはいずれかのPromiseが拒否された場合に、新しいPromiseを返します。すべてのPromiseが解決された場合、返されたPromiseは解決され、その解決値は元のPromiseの解決値の配列となります。いずれかのPromiseが拒否された場合、返されたPromiseは拒否され、その拒否理由は最初に拒否されたPromiseの拒否理由となります。