Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript返回函数的问题_Javascript_Google Geocoder - Fatal编程技术网

javascript返回函数的问题

javascript返回函数的问题,javascript,google-geocoder,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].

我有一个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");
    }
  });
}
我的问题是,如果我从另一个函数调用该函数(例如:

即使
geologite_table
中的原始值已正确计算并记录在控制台中,控制台测试日志也会显示“未定义”。 我做错什么了吗?
提前感谢您的回答:)

您可能希望在这种情况下使用回调:

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); });
}
这样做是因为地理编码器是异步的——它将在等待时继续执行程序的其余部分。通过回调,您可以在它完成aynchronous部分后给它下一组要执行的指令

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