2015-12-02 131 views
1

我想知道是否有一種方法來「暫停」一個javascript setInterval命令,然後在幾秒鐘後恢復它,然後通過循環,暫停一段時間,開始循環再次,暫停等等?換句話說,當邏輯條件正確時,在再次接通之前暫停一段時間?在JavaScript中定期暫停setInterval循環

使用僞代碼,我的想法是這樣的:

setInterval(fn, 1000); 

pausecondition = false; 

fn() 
{ 
    // do stuff, including pausecondition 

    if (pausecondition == true) 
    { 
    // pause for two seconds 
    // pausecondition = false 
    } 
} 

我想要的是一個setInterval每1000毫秒的工作,然後在暫停條件爲真,功能暫停兩秒鐘然後setInterval像以前一樣每1000毫秒恢復一次。

回答

0

如何使用setTimeout這樣的功能?

var pausecondition = false; 
var fn = function(){ 
    if (pausecondition) { 
    setTimeout(function(){ 
     pausecondition = false; 
     fn(); 
    }, 2000); 
    } else { 
    // no pause, run logic 
    } 
} 

setInterval(fn, 1000); 
+0

由於夾竹桃。我可以問一個問題嗎?我檢查了一些JavaScript網站,它說setTimeout只能使用一次;這裏是這種情況嗎? 我問的原因是我希望我的代碼每1000毫秒運行一段時間,然後暫停2000毫秒,然後每隔1000毫秒恢復一次,然後暫停,然後再次啓動等。 – EventHorizon

+0

@EventHorizo​​n簡而言之,是的,你可以運行'setTimeout'。它看起來像'setTimeout'是從你的角度平行的運行,因爲JavaScript是在引擎下使用事件循環而不是線程。但在上面的例子中,這不是你必須考慮的。 – Oleander

+0

謝謝!事實證明,我想做的事情拋出了一大堆其他問題,所以我簡化了我的方法(也提供了更多可讀代碼) – EventHorizon

0
var pauseCondition = { 
    enabled: false, 
    counter: 0, 
    countTo: 2, 
}; 

增量,並檢查計數器> = countTo