JavaScript:For循环超时
我希望我的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 (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 = 10for (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);
}
以上是 JavaScript:For循环超时 的全部内容, 来源链接: utcz.com/qa/418726.html