在JavaScript中定期暂停setInterval循环
问题描述:
我想知道是否有一种方法来“暂停”一个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毫秒恢复一次。
答
如何使用setTimeout
这样的功能?
var pausecondition = false;
var fn = function(){
if (pausecondition) {
setTimeout(function(){
pausecondition = false;
fn();
}, 2000);
} else {
// no pause, run logic
}
}
setInterval(fn, 1000);
答
var pauseCondition = {
enabled: false,
counter: 0,
countTo: 2,
};
增量,并检查计数器> = countTo
由于夹竹桃。我可以问一个问题吗?我检查了一些JavaScript网站,它说setTimeout只能使用一次;这里是这种情况吗? 我问的原因是我希望我的代码每1000毫秒运行一段时间,然后暂停2000毫秒,然后每隔1000毫秒恢复一次,然后暂停,然后再次启动等。 – EventHorizon
@EventHorizon简而言之,是的,你可以运行'setTimeout'。它看起来像'setTimeout'是从你的角度平行的运行,因为JavaScript是在引擎下使用事件循环而不是线程。但在上面的例子中,这不是你必须考虑的。 – Oleander
谢谢!事实证明,我想做的事情抛出了一大堆其他问题,所以我简化了我的方法(也提供了更多可读代码) – EventHorizon