JS:如何在for循环中延迟或设置Interval?

时间:2013-03-25 16:07:19

标签: javascript jquery google-maps-api-3 for-loop delay

我的项目调用了具有速度限制的Google Map 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);
}

1 个答案:

答案 0 :(得分: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); 

重要的小演示: Demo

你的代码不起作用的原因是因为for循环继续。因为setTimeout是异步的。假设for循环的迭代需要1毫秒(仅作为示例)。 setTimeout中的代码将在0,2001,2002,2003,2004毫秒等时触发..不是0,2000,4000等。