ホームページ >ウェブフロントエンド >jsチュートリアル >Promise.all を使用して複数の Promise を管理し待機する方法は?

Promise.all を使用して複数の Promise を管理し待機する方法は?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-24 17:37:11424ブラウズ

How to Use Promise.all to Manage and Await Multiple Promises?

複数の Promise を処理してその完了を待つ方法

非同期コードを使用する場合、多くの場合、複数の Promise を処理してそれらの完了を待つことが必要になります。続行する前にすべてを完了してください。この記事では、Promise.all を使用してこれを実現する方法を説明します。

Promise.all の紹介

Promise.all は、Promise の配列を受け入れ、解決する単一の Promise を返します。すべての入力 Promise が解決されたとき、またはいずれかの Promise が拒否された場合

Promise を返すように doSomeAsyncStuff を再構築する

doSomeAsyncStuff を Promise で動作させるには、次のように変更します。

function doSomeAsyncStuff() {
    return new Promise((resolve) => {
        editor.on('instanceReady', function(evt) {
            doSomeStuff();
            resolve(true);
        });
    });
}

Promise.all を使用してすべての非同期を待機するタスク

doSomeAsyncStuff が Promise を返したら、Promise.all を使用してそのすべてのインスタンスが完了するのを待つことができます。コードの改良版は次のとおりです。

const promises = [];

for (let i = 0; i < 5; i++) {
    promises.push(doSomeAsyncStuff());
}

Promise.all(promises)
    .then(() => {
        for (let i = 0; i < 5; i++) {
            doSomeStuffOnlyWhenTheAsyncStuffIsFinish();    
        }
    })
    .catch((e) => {
        // Handle errors here
    });

このコードは、doSomeAsyncStuff の各呼び出しから Promise の配列を作成します。 Promise.all はこの配列を受け取り、すべての Promise が解決されるのを待ちます。すべての Promise が解決されると、 then コールバックが実行され、非同期タスクの結果に依存するアクションを実行できるようになります。

以上がPromise.all を使用して複数の Promise を管理し待機する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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