非同期コールバック関数からの戻り値
プログラミングでは、非同期コールバックから取得したデータを次の関数に渡す必要があるシナリオに遭遇することがよくあります。その後の操作。この質問では、そのようなコールバックから値を返す方法を検討し、提供されたコード スニペットの特定の問題に対処します。
コード サンプルは、コールバック関数からジオコーディング リクエストの結果を返そうとします。ただし、戻り値は未定義のままです。これは、関数が戻った後にコールバックが非同期で実行されるためです。
非同期実行と同期戻り
JavaScript では、問題は非同期実行の性質にあります。この例で使用されているようなコールバック関数は、データが利用可能になるたびに実行されますが、元の関数呼び出しよりも大幅に遅くなる可能性があります。これは、コールバック関数内の return ステートメントは、元の関数の戻り値に影響を与えないことを意味します。
非同期データのコールバックの受け渡し
非同期データの取得を効果的に処理するにはの場合、一般的なアプローチは、コールバック関数を非同期関数に渡すことです。このコールバック関数は、データが利用可能になると呼び出され、戻り値の処理に使用できます。
コード スニペットでは、コールバック関数を受け入れるように foo 関数を変更できます。
function foo(address, callback) { geocoder.geocode({ 'address': address }, function(results, status) { callback(results[0].geometry.location); }); }
これで、コールバックを通じて戻り値を受け取るように foo の使用を調整できます。
foo("address", function(location) { alert(location); // This is where you get the return value });
このアプローチにより、戻り値は、非同期データが取得されるときにコールバックを通じて受信されます。
代替ライブラリと Promise ライブラリ
複数のコールバックを含むより複雑なシナリオの場合は、次のような Promise ライブラリの使用を検討してください。 Q. これらのライブラリは、非同期操作を管理し、結果をより効率的に取得するメカニズムを提供します。
以上がJavaScript で非同期コールバック関数から値を返す方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。