我有以下代码:
var sLat = "test"; //global var, set outside any function
...
geocoder.geocode({
'address': address
}, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
alert(sLat); //SHOWS test, THATS OK
sLat = "test2"; //TRYING TO CHANGE ITS VALUE
} else {
alert('Geocode was not successful for the following reason: ' + status);
}
});
alert(sLat); // SHOWS test INSTEAD OF test2
问题是var在回调函数中是可访问的,但是当我尝试更改其值时,不会保存新值("test2"
)。问题是什么?
答案 0 :(得分:1)
您实际上正在更改变量,但是当您在回调中执行此操作时,此过程是异步的,因此在回调中的代码被执行之前,最后一行已经完成。
你必须做出一个承诺,所以在排除其余代码之前它等待回调。
看看这个例子: