我希望我的for循环不应该一次执行,而是在每次迭代后等待超时。例如:for(var i=0; i<10; i++) { console.log(i); //wait for 1000}我发现了很多关于堆栈溢出的解决方案,例如:for (var i=0;i<=10;i++) { (function(ind) { setTimeout(function(){console.log(ind);}, 3000); })(i);}但是在所有实现中,循环最初等待3000毫秒,然后立即执行整个for循环。有没有一种方法可以等待1000毫秒后调用每次迭代。
3 回答

回首忆惘然
TA贡献1847条经验 获得超11个赞
不要在loops中创建函数,而是:
(function fiveSeconds (n) {
if (n < 5) setTimeout(function () {
fiveSeconds ( n ); // Redo if n < 5 (and pass n)
}, 1000);
console.log( n++ );
} (0)); // Initialize. n is 0
上面的代码将以1秒的间隔记录从0-5的十个数字。
现代浏览器(和IE10 +)
(function fiveSeconds (n) {
console.log( n++ );
if (n <= 5) setTimeout( fiveSeconds, 1000, n ); // Redo if n <= 5 (and pass n)
} (0)); // Initialize. n is 0

慕尼黑5688855
TA贡献1848条经验 获得超2个赞
为什么不使用这样的东西:
var i = 0
var id = window.setInterval(function(){
if(i >= 10) {
clearInterval(id);
return;
}
console.log(i);
i++;
}, 1000)
添加回答
举报
0/150
提交
取消