JavaScript では、複数の非同期関数を待機すると、それらが同時にではなく順番に実行されるような印象を与えることがあります。ここで疑問が生じます: これらの関数の並列実行を実現するにはどうすればよいでしょうか?
非同期関数を並列で実行するには、Promise.all( ) 関数。 Promise の配列を引数として受け取り、配列内のすべての Promise が解決されたときに解決される単一の Promise を返します。
await Promise.all([someCall(), anotherCall()]);
このコードでは、someCall() と anotherCall() の両方が同時に呼び出されます。スクリプトは、両方の関数の実行が完了した場合にのみ続行されます。
並列非同期呼び出しでは、Promise.all() によって返される配列を構造解除できます:
let [someResult, anotherResult] = await Promise.all([someCall(), anotherCall()]);
Promise.all() は次の規則に従うことに注意することが重要です。 「フェイルファスト」アプローチ。配列内のいずれかの Promise が拒否された場合、Promise.all() Promise 全体が最初に失敗した Promise からのエラーで拒否されます:
// If any of the promises fails, it will reject Promise.all([happy('happy', 100), sad('sad', 50)]).then(console.log).catch(console.log);
以上が複数の非同期 JavaScript 関数を同時に実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。