在地理编码内的Javascript中修改全局变量

时间:2014-05-14 10:30:51

标签: javascript variables google-maps-markers global geocode

我对此感到疯狂。

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

        if (status == google.maps.GeocoderStatus.OK) {

            latitude = results[0].geometry.location.lat();
            longitude = results[0].geometry.location.lng();
            locations[j][0] = direcciones[j]['1'];
            locations[j][1] = latitude;
            locations[j][2] = longitude;
            locations[j][3] = direcciones[j]['10'];
            j++;

        } 
        }); 

如果我在地理编码功能中对位置[0] [0]发出警报,它可以正常工作,但如果我这样做,我会得到之前的值,因为我没有修改全局位置变量...

有人可以帮我正确地改变那个变量吗?

1 个答案:

答案 0 :(得分:0)

  

...但如果我这样做,我会得到之前的值,因为我没有修改全局位置变量......

是的,它只是稍后。对geocode的调用是异步,因此在进行回调之前不会看到结果。 {/ 1}}函数调用之后的代码将在回调运行之前运行,因此您不会看到任何更改。

让我们使用一个更简单的例子来说明:

geocode

如果你运行(fiddle),你会看到类似的内容:

1400063937865: x = 1 (immediately after setTimeout call)
1400063937915: x = 2 (in callback)

请注意先发生的事情。