2

嗨,我有与此处相同的问题 从 Google Maps Geocoder v3 返回地址 ,我不明白如何将我的全局变量设置为返回值

我在 b 返回未定义的那一刻得到了这个

 var a;
 var b;
function outputGeo(result){
    b = result; 
     }


 geocoder.geocode({'latLng': event.latLng},function(results, status) {

         a =  results[1].formatted_address;
         outputGeo(a);
        });  
alert(b);
4

1 回答 1

0

geocoder.geocode是一个异步函数,因为它正在执行 JSONP 请求。换句话说,在结果回来之前,这alert(b)条线已经被调用了。您需要将该alert行放入回调函数之后outputGeo(a)

Javascript 是一种有趣的语言。在我研究 JSONP 和 Javascript 的同步之前,这个异步的东西一直困扰着我。我建议你这样做。了解这一点的一个好方法是编写自己的 JSONP 请求包装器。(只是一个想法。)

于 2012-07-20T14:06:56.297 回答