ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript で非同期コールバック関数から値を取得する方法

JavaScript で非同期コールバック関数から値を取得する方法

Barbara Streisand
Barbara Streisandオリジナル
2024-12-26 10:48:11440ブラウズ

How to Retrieve Values from Asynchronous Callback Functions in JavaScript?

非同期コールバック関数から値を取得できません

この一般的に発生する問題には、スタック オーバーフローに多数のスレッドがあります。広範な検索にもかかわらず、一部の開発者は依然としてコールバックからの値にアクセスする際に困難に直面しています。

主な課題は、同期メソッドが非同期呼び出しから値を返せないという事実にあります。以下の例に示すように、

function foo(address){

  // google map stuff
  geocoder.geocode( { 'address': address}, function(results, status) {
      results[0].geometry.location; // I want to return this value
  })

}
foo(); //result should be results[0].geometry.location; value

必要な値を直接返そうとすると、「未定義」の応答が返されます。その後、修正が提案されましたが、役に立ちませんでした。

そのような試みの例:

function foo(address){
  var returnvalue;    
  geocoder.geocode( { 'address': address}, function(results, status) {
      returnvalue = results[0].geometry.location; 
  })
  return returnvalue; 
}
foo(); //still undefined

解決策

解決策には、 foo 関数へのコールバック。その後戻り値を受け取ります。値:

function foo(address, fn){
  geocoder.geocode( { 'address': address}, function(results, status) {
     fn(results[0].geometry.location); 
  });
}

foo("address", function(location){
  alert(location); // this is where you get the return value
});

非同期関数とコールバック構造体:

非同期の内部関数呼び出しでは、応答を取得するために同様に非同期のラッピング関数を使用する必要があります。

ライブラリと代替案アプローチ:

Q のような Promise ライブラリを利用することで、多数のコールバックの処理を簡素化できます。これらのフレームワークは、非同期操作を管理し、より効率的かつ構造化された方法でその結果にアクセスする便利な手段を提供します。

以上がJavaScript で非同期コールバック関数から値を取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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