非同期コールバック: 戻り値
非ブロッキングな性質のため、非同期コールバック関数からの戻り値は困難になる可能性があります。問題の内訳と解決策は次のとおりです:
提供された例:
function foo(address) { // Google Maps stuff geocoder.geocode({'address': address}, function(results, status) { // Unable to return results[0].geometry.location synchronously }); }
非同期ジオコード コールバック内では、返したい値を同期的に取得できません。そうしようとすると、未定義の値が返されます。
解決策: Result を使用したコールバック
値を取得するには、コールバック関数を foo に渡します。結果:
function foo(address, callback) { geocoder.geocode({'address': address}, function(results, status) { callback(results[0].geometry.location); }); }
foo のコールバックで、場所にアクセスできます。 value:
foo("address", function(location) { alert(location); // Result obtained here });
非同期関数チェーン
非同期呼び出しが別の関数内にネストされている場合、戻り値を取得できるようにその関数も非同期にする必要があります。複雑なシナリオの場合は、Q などの Promise ライブラリを使用して非同期操作を効率的に管理することを検討してください。
以上がJavaScript で非同期コールバック関数から値を返すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。