Promise.all での順序の保持
Promise.all は、Promise の反復可能値を受け取り、解決する単一の Promise を返す JavaScript 関数です。すべての入力 Promise が解決されたら。これは、続行する前に複数の非同期操作が完了するのを待つためによく使用されます。
よくある疑問が生じます: 出力 Promise 内の解決された値の順序は、入力 Promise の順序と一致することが保証されていますか?
MDN ドキュメントによると、Promise.all の then() コールバックに渡される値は Promise の順序で提示されるようです。この質問は仕様からの確認を求めています。
Promise.all 仕様 (https://tc39.github.io/ecma262/#sec-promise.all) には次のように記載されています。
これらの点を組み合わせると、Promise.all の出力が常に入力反復可能オブジェクトの順序に厳密に従っていることは明らかです。これは、配列を Promise.all に渡すと、解決された値が入力配列に現れたのと同じ順序で出力配列に現れることを意味します。
これを示すために、次の例を考えてみましょう。
<code class="javascript">const promises = [1, 2, 3, 4, 5].map(Promise.resolve); Promise.all(promises).then((results) => { console.log(results); // [1, 2, 3, 4, 5] });</code>
この場合、どの Promise が最初に解決されるかに関係なく、出力は [1, 2, 3, 4, 5] になります。
以上がPromise.all は、解決された値の順序が入力の反復可能な順序と一致することを保証しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。