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

【JavaScript ECMAScript】Promise::Promise.any静的メソッドの使い方

Promise.any()静的メソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

Promise.any()メソッドは、複数のPromiseオブジェクトを受け取り、そのうちいずれか一つが最初に成功したときに、その成功した結果を返す新しいPromiseを生成するメソッドです。

このメソッドは、引数としてPromiseオブジェクトのイテラブル(例えばPromiseの配列)を受け取ります。渡されたPromiseが一つでも解決(fulfilled)状態になった場合、Promise.any()は直ちにその解決値を返すPromiseを返します。これにより、複数の非同期処理の中から、最も早く完了した成功結果だけを取得したい場合に非常に役立ちます。

一方、もし引数に渡されたすべてのPromiseが拒否(rejected)された場合には、Promise.any()はPromiseを拒否します。このとき、拒否の理由としては、個々のPromiseが拒否された理由をまとめたAggregateErrorオブジェクトが返されます。このAggregateErrorは、errorsプロパティとして全ての拒否理由の配列を含んでいます。

システムにおいて、いくつかのデータソースから同じ種類の情報を取得しようとする場合や、複数のAPIエンドポイントにアクセスし、どれか一つでも成功すれば十分な場合に、Promise.any()を使用することで、処理の効率化と堅牢性を高めることができます。

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

構文(syntax)

1Promise.any([
2  Promise.resolve('First success'),
3  new Promise(resolve => setTimeout(() => resolve('Second success'), 100)),
4  Promise.reject('First error')
5])
6.then(value => { /* ここで最初に成功したPromiseの値を受け取ります */ })
7.catch(error => { /* 全てのPromiseが拒否された場合にAggregateErrorを受け取ります */ });

引数(parameters)

iterable

  • iterable: Promiseオブジェクトのiterable(配列やSetなど)です。iterable内のPromiseが最初にfulfilled(成功)した時点で、そのfulfilledされた値を持つPromiseが返されます。iterable内のすべてのPromiseがrejected(失敗)した場合、iterable内のすべてのrejected理由を含むAggregateErrorが返されます。

戻り値(return)

Promise

Promise.any()は、引数として与えられたイテラブル(配列など)のPromiseのうち、最初にfulfilled(成功)したPromiseの値を解決値とする新しいPromiseを返します。もし、すべてのPromiseがrejected(失敗)した場合は、AggregateErrorを解決値とするPromiseを返します。

関連コンテンツ