如何知道回调循环的哪个迭代执行以及何时执行?

时间:2015-12-13 15:42:32

标签: javascript google-maps-api-3

我想让学校靠近一系列地点

所以我把那个地方搜索放在循环中。搜索功能有一个回调函数,它返回结果。但是回调是随机执行的,而不是我请求的顺序。所以我无法知道哪所学校被归还哪个地方???

for(i in array_of_loc)
service.nearbySearch({
location: array_of_loc[i],
rankBy:google.maps.places.RankBy.DISTANCE,
types: ['school']
}, function callback(results, status) {
alert(i);
//get the result to get info of places returned and assign it to requested location });

警报总是给我数组的长度。也就是说,在循环结束后调用回调。所以我不知道哪个位置适合哪个位置

1 个答案:

答案 0 :(得分:1)

你应该创建一个搜索函数,这样你就可以创建一个封闭,即使在回调之后,location总是可以访问的。加上you shouldn't use for (... in ...)循环迭代数组:

function search (location) {
    service.nearbySearch({
        location: location,
        rankBy: google.maps.places.RankBy.DISTANCE,
        types: ['school']
    }, function callback(results, status) {
        alert(location);
    });
}

for(var i = 0; i < array_of_loc.length; i++) {
    search(array_of_log[i]);
}