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

how to know which iteration of a loop of callback is executed and when?

本文关键字:迭代 一次 执行 何时 回调 何知道 循环      更新时间:2023-09-26

我想让学校靠近的一组位置

所以我把地点搜索放在循环中。搜索函数有一个回调函数,它会返回结果。但是回调是随机执行的,而不是按照我请求的顺序执行的。所以我不知道哪所学校被退回去了哪个地方???

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

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

您应该创建一个函数进行搜索,这样您就可以创建一个location始终可访问的闭包,即使在回调之后也是如此。另外,您不应该使用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]);
}