我想延迟一个" for循环"有一段时间,但不知道该怎么做。
例如。让我们说这个" for循环"从0到8运行,每次运行后应该延迟2 sek。
for (var i=0; i<8; i++{
do something...
wait for 2 sek. and go on with i=i++;
}
答案 0 :(得分:8)
你必须这样:
function jsHello(i) {
if (i < 0) return;
setTimeout(function () {
alert("Hello " + i);
jsHello(--i);
}, 2000);
}
jsHello(5);
或
function jsHello(i) {
alert("Hello " + i);
if (--i > -1) {
setTimeout(function () { jsHello(i); }, 2000);
}
}
jsHello(5);
答案 1 :(得分:2)
javascript没有等待命令。获得此行为的方法是使用 setTimeout :
for (var i=0; i<8; i++{
do_something(i);
}
function do_something(j) {
setTimeout(function() {
tasks to do;
}, 2000 * j);
}
每次调用函数do_something()时,它都会执行&#34;要执行的任务&#34; 调度2000 *毫秒。
答案 2 :(得分:2)
要解决此任务,您必须使用闭包 - 立即调用在i
作为参数的每次迭代时调用的函数,并在此函数内调用setTimeout。在这种情况下,您传递的参数将存储在作用域中,并可用于超时回调:
for (var i=0; i<8; i++) (function(t) {
window.setTimeout(function() {
//do anything with t
}, t*2000)
}(i))