javascript返回函数的问题
我有一个javascript函数,它对LatLng对象进行地理编码: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].
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); });
}