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

Hug*_*lpz 2 javascript jquery for-loop delay google-maps-api-3

我的项目调用了具有速度限制的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 ;
}
Run Code Online (Sandbox Code Playgroud)

我该如何处理以减慢现有的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);
}
Run Code Online (Sandbox Code Playgroud)

Pet*_*sen 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); 
Run Code Online (Sandbox Code Playgroud)

重要的小演示: 演示

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