ホームページ  >  記事  >  ウェブフロントエンド  >  ## Promise.all は Promise を連続的に処理しますか?それとも並行して処理しますか?

## Promise.all は Promise を連続的に処理しますか?それとも並行して処理しますか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-25 09:39:02252ブラウズ

## Does Promise.all Process Promises Sequentially or in Parallel?

Node.js Promise.all での逐次処理と並列処理

Promise の反復可能で Promise.all を使用する場合の一般的な質問問題が発生します: Promise は順次に処理されますか?それとも並列に処理されますか?

Q1: 順次処理または並列処理?

その曖昧なドキュメントにもかかわらず、Promise.all は そうではありません Promise を順次または並行して処理します。代わりに、提供されたすべての Promise の解決 (または拒否) を同時に待つだけです。

これは、Promise.all に渡されたすべての Promise が作成されるとすぐに同時に実行されることを意味します。 Promise.all によって返される最終結果は、解決された値の配列、またはいずれかの Promise が失敗した場合の単一の拒否値です。

Q2: Promise による逐次処理

Promise.all は順次処理を強制しないため、Promise を順次処理する必要がある場合は、連鎖した Promise のチェーンを作成できます。

<code class="js">p1.then(p2).then(p3).then(p4).then(p5)....</code>

このアプローチでは、前の Promise が解決された後に各 Promise が確実に実行されます。 .

代わりに、Array::reduce を利用して、非同期関数の aniterable による逐次実行を実現できます。

<code class="js">iterable.reduce((p, fn) => p.then(fn), Promise.resolve())</code>

以上が## Promise.all は Promise を連続的に処理しますか?それとも並行して処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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