JavaScript/GoogleMaps/Geocode -变量在for循环的回调函数中被取消设置

JavaScript/GoogleMaps/Geocode - Variable being unset inside callback function within for loop

本文关键字:函数 回调 取消 设置 for Geocode GoogleMaps 变量 JavaScript 循环      更新时间:2023-09-26

我已经搜索了SE 2个小时了,现在试图解决我失去'位置'变量值的原因。利用闭包看起来是最好的解决方案,但是在下面的回调函数中,我不知道如何正确地实现它。

有人能就这一现象提供一点见解吗?如何确切地补救?如果有关键术语,请指出来,以便我进行相应的研究。

感谢您的宝贵时间。

所讨论的代码:

for (var i = 0; i < locations.length; i++) {
    geocoder.geocode({
        'address': locations[i] // Returns location as expected
    }, function (results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            alert(locations[i]); // returns undefined
        }
    })
}

澄清一下,我已经看到了最接近的帖子类似于这一个:当使用回调在javascript循环内,有没有办法保存's在循环中更新的变量在回调中使用?但我无法使它在这种情况下起作用。

再次感谢。

for (var i = 0; i < locations.length; i++) {
    geocoder.geocode({
        'address': locations[i] // Returns location as expected
    }, (function (i) {

        var location = locations[i];
        function getLoc()
        {
           return location;
        }
        return function(results, status){
        if (status == google.maps.GeocoderStatus.OK) {
            console.log(getLoc());
        }
        }(i))
    })
}

试试这个