ホームページ >ウェブフロントエンド >jsチュートリアル >配列からパラメータを渡して実行をシーケンスする方法は?
値の配列 (例: myArray) があり、Promise を実行する必要があるシナリオを考えてみましょう。ベースの関数 (myPromise など) を順番に実行し、各配列要素をパラメータとして渡します。 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 サイトの他の関連記事を参照してください。