我希望我的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毫秒后调用每次迭代。
for
您可以使用简单的数学方法来解决:
for (var i=0;i<=10;i++) { (function(ind) { setTimeout(function(){console.log(ind);}, 1000 + (3000 * ind)); })(i); }
1000ms:0 4000ms:1 7000ms:2 10000ms:3 13000ms:4 …
跟随评论
您的请求似乎有点模糊。如果您想在上一次超时后执行某项操作,则可以设置一个限制并比较当前索引:
var limit = 10 for (var i=0;i<=limit;i++) { (function(ind) { setTimeout(function(){ console.log(ind); if(ind === limit){ console.log('It was the last one'); } }, 1000 + (3000 * ind)); })(i); }
我想我知道你想要什么…
它只是要做
for (var i=0;i<=10;i++) { (function(ind) { setTimeout(function(){console.log(ind);}, 1000 * ind); })(i); }