2017-05-25 21 views
-1

说我有三个函数,我想顺序运行5次,每次之间等待一秒,第一个函数将for循环中的变量作为参数。这样的事情:在for循环中执行三个不同的函数有延迟

for (var i=0; i<5; i++) { 
    setTimeout(function(){ 
     one(i); 
    },1000); 
    setTimeout(function(){ 
     two(); 
    },2000); 
    setTimeout(function(){ 
     three(); 
    },3000); 
} 

我试过这个,它似乎没有工作。我怎样才能解决这个问题?

+0

一种方法你的目标是调用函数'两()'从功能'一个()'内超时,和功能'的三()'用超时从函数'two()'中。 –

回答

1

setTimeout()设置一个计时器来运行在未来的功能,但立即返回,这样你的函数将在1秒钟后运行one() 5次,2秒,three() 5次后3秒后two() 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); 
} 
+0

完美的作品!你能向我解释一下你如何设置间隔,以便我能更好地理解它?非常感谢你 – user3385777

+1

所有的事件都是立即设置的,所以所有的事件都是相对于开始时间的。如果我们忽略'* 1000'(这只是将ms转换为秒),我们只是设置为to(i * 3)(即5个循环中的每个循环为3秒)加上功能1,2或3秒一个(),两个()和三个() – mykel