在 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);
}