ホームページ > ウェブフロントエンド > jsチュートリアル > 順序を維持しながら Promise ループの同期実行を実現するにはどうすればよいですか?

順序を維持しながら Promise ループの同期実行を実現するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-10-29 14:01:02
オリジナル
677 人が閲覧しました

How to Achieve Synchronous Execution of Promise Loops while Preserving Order?

Promise ループの同期実行を実現する

ループ反復中の Promise 呼び出しとその連鎖ロギング操作の同期性をどのように確保しますか? promisewhile() を使用する最初のアプローチは有望に見えますが、適切な実行順序の保持について懸念が生じます。

代わりに、このタスクには Promise の固有の機能を活用することを検討してください。ユーザーの詳細を取得し、元の応答順序を維持するための一連の非同期呼び出しとして問題を定義することで、Array.prototype.reduce() を利用してフラットな .then() チェーンを構築できます。

解決策:

次のコードは、このアプローチの例です。

<code class="javascript">function fetchUserDetails(arr) {
    return arr.reduce(function(promise, email) {
        return promise.then(function() {
            return db.getUser(email).done(function(res) {
                logger.log(res);
            });
        });
    }, Promise.resolve());
}</code>
ログイン後にコピー

この関数は、電子メール アドレスの配列を受け取り、Promise を返します。 reduce() 関数は配列を反復処理し、電子メールごとに getUser Promise を実行します。結果は、done() コールバックに同期的に記録されます。

関数の呼び出し:

関数を呼び出すには、電子メール アドレスの配列 (arrayOfEmailAddys) を設定し、次を使用します。次のようになります:

<code class="javascript">fetchUserDetails(arrayOfEmailAddys).then(function() {
    console.log('all done');
});</code>
ログイン後にコピー

このコードは線形 Promise チェーンを作成し、各 Promise が順番に解決され、ロギング操作が正しい順序で実行されることを保証します。

以上が順序を維持しながら Promise ループの同期実行を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート