函数中的返回变量来自同一函数中的方法回调数据

时间:2010-04-14 22:56:09

标签: javascript function callback return

如何为codeAddress函数返回latlon变量。返回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);
                   }

       });
     }  
   } 

2 个答案:

答案 0 :(得分:1)

在外部函数中声明一个变量,在内部函数中设置它并将其返回到外部:

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;
}

注意:这仅在内部功能立即运行时才有效!

答案 1 :(得分:0)

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

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

API的Geocoding Requests部分对此进行了解释。