Javascript 从同一函数中的方法回调数据返回函数中的变量

Javascript 从同一函数中的方法回调数据返回函数中的变量,javascript,function,callback,return,Javascript,Function,Callback,Return,如何为codeAddress函数返回latlon变量。return latlon不工作,可能是因为范围,但我不确定如何使其工作 function codeAddress(addr) { if (geocoder) { geocoder.geocode({ 'address': addr}, function(results, status) { if (status == google.maps.GeocoderSt

如何为codeAddress函数返回latlon变量。return latlon不工作,可能是因为范围,但我不确定如何使其工作

function codeAddress(addr) { 
       if (geocoder) { 
           geocoder.geocode({ 'address': addr}, function(results, status) {
                    if (status == google.maps.GeocoderStatus.OK) {
                    var latlon = results[0].geometry.location.c+","+results[0].geometry.location.b;  
                    } else {
                       alert("Geocode was not successful for the following reason: " + status);
                   }

       });
     }  
   } 

在外部函数中声明变量,在内部函数中设置并在外部函数中返回:

function codeAddress(addr) { 
  var returnCode = false;
  if (geocoder) { 
    geocoder.geocode({ 'address': addr}, function(results, status) {
      if (status == google.maps.GeocoderStatus.OK) {
        var latlon = results[0].geometry.location.c+","+results[0].geometry.location.b;
        returnCode = true;
      } else {
        alert("Geocode was not successful for the following reason: " + status);
      }
    });
  }  
  return returnCode;
}

注意:仅当内部函数立即运行时,此操作才有效

您无法从
codeAddress
返回
geocoder.geocode
的结果,因为
geocoder.geocode
将其结果返回给您提供的回调/关闭。您必须继续使用回调函数作为函数的参数
codeAddress

将回调中的任何内容返回给
geocoder.geocode
返回给
geocoder.geocode>在应用程序中没有任何意义。您必须从提供给
geocoder.geocode
的回调中调用应用程序中的某些函数


API的一节对此进行了解释。

这可能不会,因为geocoder.geocode可能会执行异步方法调用,其中返回结果的唯一方法是通过提供的回调。谢谢,我在jquery ajax回调中多次遇到过这种情况,只是今天没有考虑。谢谢你的大脑提升。