ホームページ >ウェブフロントエンド >jsチュートリアル >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 サイトの他の関連記事を参照してください。