2015-12-02 153 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