Widely available すべての主要ブラウザで対応済み。安心して使用可能。

概要

Promise.any() は複数の Promise を受け取り、最初に fulfilled になった Promise の値を返します。レース条件やフォールバック戦略の実装に便利です。

対応ブラウザ

機能 デスクトップ モバイル
Chrome
Edge
Firefox
Safari
Chrome Android
Safari iOS
85
85
79
14
85
14

AggregateError() コンストラクターは AggregateError オブジェクトを生成します。

85
85
79
14
85
14

errors は AggregateError インスタンスのデータプロパティで、集約されたエラーを表す配列を保持します。

85
85
79
14
85
14

シリアライズ可能オブジェクトは、どのような JavaScript 環境 ("realm") でもシリアライズし、後でデシリアライズすることができるオブジェクトです。 これは例えば、ディスクに格納し後から復元したり、structuredClone() で複製したり、DedicatedWorkerGlobalScope.postMessage() を使用してワーカー間で共有したりすることができます。

98
98
103
17
98
17

Promise.any() は静的メソッドで、入力としてプロミスの反復可能オブジェクトを取り、単一の Promise を返します。この返されたプロミスは、入力のプロミスのいずれかが履行されたときに、この最初の履行値で履行されます。入力のプロミスがすべて拒否された場合(空の反復可能オブジェクトが渡された場合を含む)、拒否理由の配列を格納した AggregateError で、拒否されます。

85
85
79
14
85
14
1+対応 (バージョン) 未対応 注釈あり サブ機能の解説は MDN Web Docs (CC BY-SA 2.5)
注釈 1件
実装メモ
  • AggregateError` は、追加のプロパティなしで `Error` 型にシリアライズされる。
注釈 1件
実装メモ
  • AggregateError` は、追加のプロパティなしで `Error` 型にシリアライズされる。
注釈 1件
実装メモ
  • AggregateError` は `AggregateError` 型にシリアライズされ、プロパティ `name`、`message`、`cause`、`errors` を持つ。
注釈 1件
実装メモ
  • AggregateError` は、追加のプロパティなしで `Error` 型にシリアライズされる。

基本構文

JAVASCRIPT
// Fetch the resource from the fastest CDN
const resource = await Promise.any([
  fetch('https://cdn1.example.com/data'),
  fetch('https://cdn2.example.com/data'),
  fetch('https://cdn3.example.com/data'),
]);

console.log(resource); // The first successful response

ライブデモ

fastestrespons. Read

Multiple. sa-ba- to showprocessing., also Doneresult use..

プレビュー全画面表示

Error time. Fallback

onepart that failure also, or one that success. Value..

プレビュー全画面表示

allfailure case

all. Promise that failure and, AggregateError that emitlive..

プレビュー全画面表示

実務での使いどころ

  • Promise.any() の活用

    複数の Promise のうち最初に成功したものの結果を返す。すべて失敗した場合のみ AggregateError をスローする。

注意点

  • 特になし。すべての主要ブラウザで安定して動作する。

アクセシビリティ

  • JavaScript による動的更新時は、aria-live リージョンで変更をスクリーンリーダーに通知する。

Powered by web-features