我有一个延迟循环工作,显示数字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);
}
有人可以帮忙吗?
由于
答案 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