「Promise.all」は解決された値の順序を保持しますか?

Barbara Streisand
リリース: 2024-11-03 00:22:29
オリジナル
573 人が閲覧しました

Does `Promise.all` Preserve the Order of Resolved Values?

Promise.all: 解決された値の順序

JavaScript では、Promise.all は解決を許可することで Promise の機能を強化するように設計されています。複数の約束を同時に実行します。 Promise.all の重要な側面の 1 つは、解決された値がコールバックに渡される順序です。

MDN ドキュメントによると、解決された値の順序は、入力配列内の Promise の順序に対応する必要があります。これは、解決する最初の Promise の値が、then() コールバックに渡される結果配列の最初に配置されることを意味します。

これを確認するために、JavaScript Promise 仕様を詳しく調べてみましょう。 「Promise.all (iterable)」セクションには、Promise の反復可能値を単一の Promise に解決するための手順が記載されています。重要な詳細はステップ 4e にあり、これには、解決された Promise ごとに内部 [[Index]] スロットを作成することが含まれます。このスロットは、元の入力配列内の Promise のインデックスを明示的にマークします。

したがって、Promise.all 実装では、複数の Promise を同時に解決するときに、入力内の Promise の順序に基づいて出力が厳密に順序付けされることが保証されます。配列。この順序の保持は、入力配列 (配列など) が一貫した順序を維持している限り当てはまります。

これを説明するには、次のコードを考えてみましょう。

<code class="js">const somePromises = [1, 2, 3, 4, 5].map(Promise.resolve);
Promise.all(somePromises).then(function(results) {
  console.log(results); // Expected result: [1, 2, 3, 4, 5]
});</code>
ログイン後にコピー

このコードがが実行されると、解決された値が somePromises 配列内の Promise の順序でコンソールに記録されます。これは、Promise.all の順序保持機能を示しています。

以上が「Promise.all」は解決された値の順序を保持しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート