javascript返回函数的问题

时间:2014-02-16 17:47:54

标签: javascript google-geocoder

我有这个javascript函数对LatLng对象进行地理编码:

function geolocate_table(location)
{
  geocoder.geocode({'latLng': location}, function(results, status){
    if( status == google.maps.GeocoderStatus.OK){
      if(results[0])
      {
        console.log(results[0].formatted_address);
        return(results[0].formatted_address);
      }
      else
        return("Non disponibile");
    }
    else
    {
      return("jasand");
    }
  });
}

我的问题是如果我从另一个调用该函数(例如:

function test(latlng)
{
  var street;
  street=geolocate_table(latlng);
  console.log(street);
}

即使geolocate_table中的原始值被正确评估并在控制台中记录,测试的控制台日志也会给我“未定义”。 难道我做错了什么? 提前感谢您的答案:)

1 个答案:

答案 0 :(得分:0)

您可能希望在此实例中使用回调:

function geolocate_table(location, callback)
{
     //do stuff, but for every return you would have
     //something like
     if (typeof callback == 'undefined') return whatever;
     else return callback(whatever);
}

function test(latlng)
{
   var street;
   street=geolocate_table(latlng, function() { console.log(street); });
}

你这样做是因为地理编码器是异步的 - 它会在等待时继续执行程序的其余部分。通过回调,您可以在完成异步部分后为其提供下一组指令。