慕容708150
2019-11-18 18:33:06
我希望我的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
提交
取消