JavaScript / GoogleMaps / Geocode - 在for循环内的回调函数内部未设置变量

时间:2014-05-20 18:14:37

标签: javascript for-loop closures google-geocoder

我一直在搜索SE 2小时,现在试图解决我失去'locations'变量值的原因。利用闭包看起来是最好的解决方案,但在下面的回调函数的上下文中,我无法弄清楚如何正确实现它。

有人能否就这一现象提供一些见解,如何解决这个问题?如果有任何关键术语,请指出它们,以便我可以相应地研究它们。

感谢您的时间。

有问题的代码:

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
        }
    })
}

为了澄清,我已经看到了与此类似的最接近的帖子:When using callbacks inside a loop in javascript, is there any way to save a variable that's updated in the loop for use in the callback?但我无法在这种情况范围内使其发挥作用。

再次感谢。

1 个答案:

答案 0 :(得分:0)

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))
    })
}

试试这个