ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript で一連の Promise を同期的に実行するにはどうすればよいですか?

JavaScript で一連の Promise を同期的に実行するにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-06 22:15:02239ブラウズ

How to Synchronously Execute a Sequence of Promises in JavaScript?

一連の Promise を同期するには?

このシナリオでは、Promise オブジェクトの配列があり、配列内で指定された正確な順序で解決する必要があります。さらに、1 つの要素が拒否された場合は、チェーン全体が即座に拒否され、後続の要素を解決しようとするのを防ぐ必要があります。

手動反復

次に、Promise を順次実行するための手動反復を示す例を示します。

この関数は、引数として配列と Promise を返す関数 fn を受け取ります。配列を反復処理し、各要素で fn を呼び出し、結果を次の反復に渡します。

Promise で .reduce() を使用する

このアプローチでは、reduce() メソッドを使用します。結果の配列を蓄積します。配列内の各項目は、反復を進めるために fn から返された Promise を使用して順次処理されます。

Bluebird Promise ライブラリの使用

Bluebird Promise ライブラリは、非同期操作を処理するための便利なメソッドを提供します。順次反復を含みます。

Promise.mapSeries() メソッドは、配列と Promise 生成関数を受け取り、解決された結果の配列に解決される Promise を返します。

ES7 を使用するasync/await

ES7 async/await 構文を使用すると、順次非同期操作をより簡潔で読みやすい方法で記述することができます。

この例では、processArray 関数はfn から返された各 Promise が解決されるまで await を使用してループを一時停止します。

正しいアプローチの選択

一連の Promise を同期するための最適なアプローチは、Promise の数などの要因によって異なります。配列内の要素、処理関数 fn の複雑さ、および必要なエラー処理動作。小さな配列と単純な処理関数の場合は、手動で反復するか、Bluebird の Promise.mapSeries() を使用するだけで十分な場合があります。より複雑なシナリオの場合は、async/await または最終回答で提供されているようなカスタム ソリューションを使用する方が適している可能性があります。

以上がJavaScript で一連の Promise を同期的に実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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