2

我的项目调用有速度限制的谷歌地图 API。所以我的 for 循环必须放慢速度。

我有以下for循环JS代码

// Iterate Data and create markers
for (var i in Data) {
    address = Data[i].address;
    tag = Data[i].tag
    placeAddressOnMap(address, tag);
    i = i + 1 ;
}

我应该如何处理以减慢现有的 for 循环?


我尝试了以下不起作用的JS 代码:

// Iterate Data and create markers
for (var i in Data) {
    address = Data[i].address;
    tag = Data[i].tag
    placeAddressOnMap(address, tag);
    i = i + 1 ;
    setTimeout(function () { i = i }, 2000); // failing delay using setTimeout(function () { }, 2000);
}
4

1 回答 1

5

我相信您想设置一个时间间隔,我没有您的完整代码,但其中包含以下内容:

var timesRun = -1;
var interval = setInterval(function(){
    timesRun += 1;
    if(timesRun == Data.length){
        clearInterval(interval);
    }
    address = Data[i].address;
    tag = Data[i].tag
    placeAddressOnMap(address, tag);
}, 2000); 

重要的小演示: 演示

您的代码不起作用的原因是因为 for 循环继续进行。因为 setTimeout 是异步的。假设您的 for 循环迭代需要 1 毫秒(只是一个示例)。setTimeout 中的代码将在 0、2001、2002、2003、2004 毫秒等时触发。而不是 0、2000、4000 等。

于 2013-03-25T16:10:21.433 回答