问题
I want to delay a "for loop" for a while but don't know how to do it.
For example. Let's say this "for loop" runs from 0 to 8 and after each i there should be a delay for 2 sek.
for (var i=0; i<8; i++{
do something...
wait for 2 sek. and go on with i=i++;
}
回答1:
You'll have to go that way:
function jsHello(i) {
if (i < 0) return;
setTimeout(function () {
alert("Hello " + i);
jsHello(--i);
}, 2000);
}
jsHello(5);
or
function jsHello(i) {
alert("Hello " + i);
if (--i > -1) {
setTimeout(function () { jsHello(i); }, 2000);
}
}
jsHello(5);
回答2:
To resolve this task you have to use closure - immediately invoke function witch be called on every iteration with i
as param, and setTimeout inside this function. In this case param you passed will be stored in scope and could be used in timeout callback:
for (var i=0; i<8; i++) (function(t) {
window.setTimeout(function() {
//do anything with t
}, t*2000)
}(i))
回答3:
Javascript doesn't have a wait command. The way to get this behavior is using setTimeout
:
for (var i=0; i<8; i++){
do_something(i);
}
function do_something(j) {
setTimeout(function() {
tasks to do;
}, 2000 * j);
}
Every time the function do_something()
is called, it executes "tasks to do" scheduled by 2000*i
milliseconds.
来源:https://stackoverflow.com/questions/27443185/delay-a-for-loop-with-javascript