ホームページ >ウェブフロントエンド >jsチュートリアル >配列パラメータを使用して Promise を順番に実行するにはどうすればよいですか?

配列パラメータを使用して Promise を順番に実行するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-20 14:59:02537ブラウズ

How to Execute Promises Sequentially with Array Parameters?

配列パラメータを使用して Promise を順次実行する

シナリオによっては、配列からパラメータを渡して Promise を順番に実行する必要がある場合があります。これは、配列が動的に設定され、実行順序が重要である場合に必要になります。

「一時停止可能なループ」を作成する 1 つの方法は、.then メソッドを繰り返し使用することです。ただし、これは面倒で、ピラミッド型の Promise チェーンが生成される可能性があります。

Promises の使用

よりクリーンな解決策には、Array.reduce を使用して Promise チェーンを 1 つの Promise に折りたたむことが含まれます。

myArray.reduce(
  (p, x) =>
    p.then(() => myPromise(x)),
  Promise.resolve()
)

このアプローチでは、一連のチェーンされた Promise が作成され、順次実行が保証されます。

非同期関数の使用

あるいは、非同期関数を使用すると、より読みやすく効率的な実装が可能になります。次の例では、非同期関数を使用して Promise を繰り返し実行します。

const forEachSeries = async (iterable, action) => {
  for (const x of iterable) {
    await action(x)
  }
}

forEachSeries(myArray, myPromise)

戻り値の収集

Promise から戻り値を収集する必要がある場合は、変更されたバージョンを使用できます。 MapSeries と呼ばれる forEachSeries 関数の:

const mapSeries = async (iterable, fn) => {
  const results = []

  for (const x of iterable) {
    results.push(await fn(x))
  }

  return results
}

この関数は反復可能関数を反復処理し、Promise の結果を収集し、結果の配列を返します。

これらの手法を使用すると、次のことができます。配列からパラメータを渡し、実行順序を確保し、必要に応じて結果を収集することで、Promise を順番に簡単に実行できます。

以上が配列パラメータを使用して Promise を順番に実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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