2015-07-10 26 views
1

我有以下的javascript函数:的setInterval重播功能

function One(){ 
    setInterval(function(){ //piece of code },3000); 

    setInterval(function(){ //piece of code },3000); 

    setInterval(function(){ One(); },3000); 
} 

正如你所看到的,我想在3秒后要执行的第一段代码,然后跳转到第二个的setInterval和运行代码在3秒钟之内,然后它跳转到第三个setInterval,它重新运行整个函数,但它不起作用......它运行第一个代码段,第二个代码段,第三个代码段,而不是第三个代码段运行该函数,它会继续执行第二段代码。

+3

您可能想要setTimeout而不是setInterval。 –

+0

它的异步问题。使用async.js库中的promise或sync函数。 回调可能会让你的代码感到困惑,如果你不小心。 –

回答

4

我想你想要setTimeout来代替。 setInterval()会一次又一次地给它打电话,每次打电话给One()时,你只希望它打一次电话。然后,您可以将它们链接在一起,如下所示:

function One(){ 
    setTimeout(function(){ 
     //piece of code A 

     setTimeout(function(){ 
      //piece of code B 

      setTimeout(function(){ 
       One(); //restart 
      },3000); 

     },3000); 

    },3000); 
} 
+0

真棒,就是这样,只是一个小问题,第二个setTimeout比第一个调用代码更快...... –

+0

你是什么意思'比第一个'更快地调用代码? – DLeh

+0

没关系,我在我的代码中做错了什么,谢谢 –