ホームページ  >  記事  >  ウェブフロントエンド  >  「Promise.all()」は解決された値の順序を保持しますか?

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

DDD
DDDオリジナル
2024-11-04 05:22:29953ブラウズ

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

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

Promise.all() メソッドは引数として反復可能を受け取り、新しい値を返します。イテラブル内のすべての Promise が解決されると解決される Promise。疑問が生じます: 解決された値の順序はイテラブル内の Promise の順序と一致することが保証されていますか?

MDN ドキュメントによると、解決された値は Promise の順序で表示される必要があります。ただし、この特定の動作への直接の参照は、仕様ではすぐには明らかではありません。

仕様を詳しく調べると、Promise.all() に渡された反復可能オブジェクトによって PerformPromiseAll() が呼び出されていることがわかります。次に、PerformPromiseAll() は IteratorStep() を使用して反復可能を反復し、Promise の順序を保証します。

さらに、解決された各 Promise には、元の入力反復可能内のインデックスを示す内部 [[Index]] スロットがあります。このスロットは、出力配列が元の順序を維持することを保証するために解決プロセス中に使用されます。

要約すると、Promise.all() 内の解決された値の順序は、入力が保存されている限り厳密に保持されます。 iterable は順序付けされています。これは、次のコード スニペットに例示されています:

<code class="js">const slow = new Promise(resolve => setTimeout(resolve, 200, 'slow'));
const instant = 'instant';
const quick = new Promise(resolve => setTimeout(resolve, 50, 'quick'));

Promise.all([slow, instant, quick]).then(responses => {
  responses.map(response => console.log(response));
});

// Output: [ 'instant', 'quick', 'slow' ]</code>

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。