0

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

我尝试将整个代码放入 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); 
}

这是一个代码笔链接

有人可以帮忙吗?

谢谢

4

2 回答 2

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
    }());
}());
于 2013-05-05T22:32:10.837 回答
1

setInterval()前来救援:

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

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

于 2013-05-05T22:26:19.487 回答