在javascript中延迟'for loop'

时间:2013-05-05 22:23:59

标签: javascript loops while-loop delay

我有一个延迟循环工作,显示数字0-3,延迟1秒,但我希望它再重新开始这个过程。

我尝试将整个代码放入x< 99的while循环中 (永远不会发生的事情因此使循环永远重复) 这似乎不起作用

以下是代码:

sequence=["0","1","2","3"];

while (x<99) {
x=-1;
(function myLoop (i) {          
   setTimeout(function () {   
   x++;
   document.write(sequence[x] + "<br/>");
   if (--i) myLoop(i);  
  }, 1000)
  })(4); 
}

Here is a code-pen link

有人可以帮忙吗?

由于

2 个答案:

答案 0 :(得分:4)

在这种情况下,循环不起作用。有多种方法可以做到这一点。一种方法是“递归地”调用setTimeout,在每次调用时增加索引。

var sequence=["0","1","2","3"];

(function() { // some boilerplate code to keep `i` private
    var i = 0; // running index
    (function run() {
        console.log(sequence[i]);
        i = (i+1) % sequence.length; // increase `i` and wrap around
        setTimeout(run, 1000); // next iteration
    }());
}());

答案 1 :(得分:1)

setInterval()来救援:

“重复调用函数或执行代码片段,每次调用该函数之间都有固定的时间延迟。”

https://developer.mozilla.org/en/docs/DOM/window.setInterval