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 = 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);

}

以上是 JavaScript:For循环超时 的全部内容, 来源链接: utcz.com/qa/418726.html

回到顶部