複数の 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 サイトの他の関連記事を参照してください。