在JavaScript中延迟'for循环'
问题描述:
我有一个延迟循环工作,显示数字0-3与1秒的延迟,但我希望它然后再次启动此过程。在JavaScript中延迟'for循环'
我试图把整个代码为while循环随x (的东西,绝不会因此出现使循环重复永远) 这似乎并不奏效
下面是代码:
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);
}
是否有人可以帮忙吗?
感谢
答
在这种情况下循环不起作用。有多种方法可以做到这一点。一个是“递归地”调用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
}());
}());
答
setInterval()
来抢救:
“调用一个函数或重复执行一段代码,每次调用该函数之间的固定时间延迟。”
https://developer.mozilla.org/en/docs/DOM/window.setInterval
我刚刚试过你的脚本,什么也没发生 – 2013-05-05 22:39:24
@Caedan:你必须看看控制台! – 2013-05-05 22:41:52
@ alex23:是的,我猜'setInterval'可以很好地工作。就我个人而言,当使用'setInterval'进行递归时,我觉得我可以更好地控制整个过程。我也更习惯于(与Ajax调用结合使用)。我想可以归结为你是否想要在最后一次运行后每隔x秒或x秒严格执行代码。在某些应用中可能会有所不同。 – 2013-05-05 22:43:09