2015-07-10 24 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

沒關係,我在我的代碼中做錯了什麼,謝謝 –