Javascript 从同一函数中的方法回调数据返回函数中的变量
如何为codeAddress函数返回latlon变量。return latlon不工作,可能是因为范围,但我不确定如何使其工作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
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回调中多次遇到过这种情况,只是今天没有考虑。谢谢你的大脑提升。