非同期プログラミングには、独立して実行される関数の開始が含まれるため、関数の完了を同期することが困難になります。この記事は、この課題に対処することを目的としており、特に、後続の操作を実行する前に一連の非同期コールバック関数が完了するのを効率的に待つ方法に焦点を当てています。
一般的なアプローチの 1 つは、各関数の完了ステータスを手動で追跡することです。ブール値フラグの配列を通じて実現されます。この方法は効果的ではありますが、継続的なメンテナンスが必要であり、非同期関数の数が増えるとすぐにエラーが発生しやすくなります。
より洗練されたソリューションでは、多くの最新のフレームワークやブラウザでサポートされている機能である Promise を利用します。 Promise を使用すると、非同期操作の将来の値を表すオブジェクトを作成できます。 Promise を組み合わせることで、個々の Promise がすべて完了したときに解決される単一の Promise を作成できます。
Promise を使用すると、以下の例に示すように、体系的な方法ですべての非同期関数の結果を取得できます。 :
const promises = []; for (let i = 0; i < numAsyncCalls; i++) { promises.push(asyncCall(i)); } Promise.all(promises).then((results) => { // results[i] contains the result of the ith asynchronous call // Perform subsequent operations here... });
この例では、asyncCall は Promise を返す非同期関数です。 Promise.all 関数は、Promise の配列を受け取り、すべての入力 Promise が解決されたときに解決される Promise を返します。 Promise.all Promise が解決されると、結果の配列には非同期呼び出しの解決された値が含まれるため、必要な操作を続行できるようになります。
Promise を使用すると、非同期関数の同期が簡素化されるだけでなく、より多くの機能が提供されます。潜在的なエラーを処理する一貫性のある堅牢な方法。この手法を活用すると、非同期操作を効果的に調整し、さらなるアクションを実行する前に非同期操作の完了を保証できます。
以上が複数の非同期コールバック関数が完了するのを効率的に待つにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。