在 for 循环中延迟执行三个不同的函数
Execute Three Distinct Functions in for loop with delays
假设我有三个函数,我想按顺序 运行 5 次,每个函数之间等待一秒钟,第一个函数将 for 循环中的变量作为参数。像这样:
for (var i=0; i<5; i++) {
setTimeout(function(){
one(i);
},1000);
setTimeout(function(){
two();
},2000);
setTimeout(function(){
three();
},3000);
}
这个我试过了,好像不行。我该如何解决这个问题?
setTimeout()
为将来 运行 函数设置一个计时器,但立即 returns,所以你的函数将 运行 one()
5 次之后1 秒,2 秒后 two()
5 次,3 秒后 three()
5 次。
您可以通过
实现您的目标
for (var i=0; i<5; i++) {
setTimeout(function(){
one(i);
},(i * 3 + 1) * 1000);
setTimeout(function(){
two();
},(i * 3 + 2) * 1000);
setTimeout(function(){
three();
},(i * 3 + 3) * 1000);
}
假设我有三个函数,我想按顺序 运行 5 次,每个函数之间等待一秒钟,第一个函数将 for 循环中的变量作为参数。像这样:
for (var i=0; i<5; i++) {
setTimeout(function(){
one(i);
},1000);
setTimeout(function(){
two();
},2000);
setTimeout(function(){
three();
},3000);
}
这个我试过了,好像不行。我该如何解决这个问题?
setTimeout()
为将来 运行 函数设置一个计时器,但立即 returns,所以你的函数将 运行 one()
5 次之后1 秒,2 秒后 two()
5 次,3 秒后 three()
5 次。
您可以通过
实现您的目标for (var i=0; i<5; i++) {
setTimeout(function(){
one(i);
},(i * 3 + 1) * 1000);
setTimeout(function(){
two();
},(i * 3 + 2) * 1000);
setTimeout(function(){
three();
},(i * 3 + 3) * 1000);
}