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