配列からパラメータを渡して実行をシーケンスする方法は?

Mary-Kate Olsen
リリース: 2024-10-20 14:57:02
オリジナル
372 人が閲覧しました

How to Sequence Promise Execution with Parameter Passing from an Array?

配列から渡されるパラメーターによる Promise の順次実行

値の配列 (例: myArray) があり、Promise を実行する必要があるシナリオを考えてみましょう。ベースの関数 (myPromise など) を順番に実行し、各配列要素をパラメータとして渡します。 Promise が正しい順序で解決されることを保証する「一時停止可能なループ」を実装するにはどうすればよいですか?

解決策: Promise の反復実行

順次実行を実現するには、Promise チェーンを組み合わせて使用​​できます。そして反復処理。これを行う方法を示すコード スニペットを次に示します。

myArray.reduce(
  (p, x) =>
    p.then(() => myPromise(x)),
  Promise.resolve()
)
ログイン後にコピー

このアプローチでは、reduce メソッドを利用して配列を反復処理し、一連のチェーンされた Promise を作成します。各 Promise は前の Promise が完了した後に解決され、目的の実行シーケンスが効果的に強制されます。

非同期関数の代替

非同期関数をサポートしている場合は、forEachSeries を使用したよりクリーンなソリューションが利用可能です。 function:

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

forEachSeries(myArray, myPromise)
ログイン後にコピー

この関数は配列を反復処理し、各要素で一時停止し、次の反復に進む前に Promise が解決されるのを待ちます。

結果の収集

Promise の戻り値を配列に収集する必要がある場合は、forEachSeries 関数を次のように変更できます。

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

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

  return results
}
ログイン後にコピー

この関数は配列を反復処理し、Promise の結果を結果に蓄積します。配列を取得し、最後に収集された結果を返します。

以上が配列からパラメータを渡して実行をシーケンスする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!