我有一个延迟的循环,它显示数字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
有人能帮帮忙吗?
谢谢
发布于 2013-05-06 06:32:11
在这种情况下,循环将不起作用。有多种方法可以做到这一点。一种方法是“递归地”调用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-06 06:26:19
setInterval()出手相救:
重复调用函数或执行代码段,每次调用该函数之间有固定的时间延迟。
https://developer.mozilla.org/en/docs/DOM/window.setInterval
https://stackoverflow.com/questions/16389734
复制相似问题