我想在每次迭代时延迟我的 while
循环。我尝试了以下方法:
var o = 1;
while(o<4){
setTimeout("setupAnimation(o)",2000);
//setupAnimation(o); //<--this works but everything happens att the same time
o++;
}
我也试过这样写,也没用:
var o = 1;
function repeatMe(){
setupAnimation(o);
o++;
setTimout('repeatMe()',1000);
}
有什么建议吗?
最佳答案
eval
速度慢、难以调试并且存在潜在的安全问题(取决于数据的来源)。不要使用它。 (将字符串传递给 setTimeout
通过代理使用 eval
。)
改为将函数传递给 setTimeout
。您需要使用闭包为您传递的函数捕获 o
的当前值。
您可能还应该在这里使用 for
循环而不是 while
循环。语法更清晰。
function setupAnimationFactory(o) {
return function() {
setupAnimation(o);
}
}
for (var o = 0; o < 4; o++){
setTimeout(setupAnimationFactory(o),2000);
}
关于javascript - 使用 setTimeout 延迟循环迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6344000/