Promise.any()
AggregateError オブジェクトは、複数のエラーを 1 つのエラーにまとめる必要があるときのエラーを表します。これは一つの操作で複数のエラーを報告する必要があるときに発生します。例えば Promise.any() において、渡されたすべてのプロミスが拒否された場合などです。
SuppressedError と比較すると、AggregateError は無関係のエラーのリストを表すのに対し、 SuppressedError は他のエラーを処理中に発生したエラーを表します。
AggregateError は Error のサブクラスです。
対応ブラウザ
| 機能 | デスクトップ | モバイル | ||||
|---|---|---|---|---|---|---|
| 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 |
- AggregateError` は、追加のプロパティなしで `Error` 型にシリアライズされる。
- AggregateError` は、追加のプロパティなしで `Error` 型にシリアライズされる。
- AggregateError` は `AggregateError` 型にシリアライズされ、プロパティ `name`、`message`、`cause`、`errors` を持つ。
- AggregateError` は、追加のプロパティなしで `Error` 型にシリアライズされる。
基本構文
// 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 ライブデモ
実務での使いどころ
-
Promise.any() の活用
AggregateError オブジェクトは、複数のエラーを 1 つのエラーにまとめる必要があるときのエラーを表します。
注意点
- 特になし。すべての主要ブラウザで安定して動作する。
アクセシビリティ
- JavaScript による動的更新時は、aria-live リージョンで変更をスクリーンリーダーに通知する。