为了账号安全,请及时绑定邮箱和手机立即绑定

JavaScript:超时循环

JavaScript:超时循环

慕容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


查看完整回答
反对 回复 2019-11-18
?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

为什么不使用这样的东西:


var i = 0

var id = window.setInterval(function(){

    if(i >= 10) {

        clearInterval(id);

        return;

    }


    console.log(i);

    i++;

}, 1000)


查看完整回答
反对 回复 2019-11-18
  • 3 回答
  • 0 关注
  • 403 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信