当条件为真时停止并恢复Javascript执行

时间:2016-03-09 23:11:55

标签: javascript jquery

首先,我写这个问题是因为那里的其他答案对我没有帮助。

我有一个运行setTimeOut函数的页面,当用户点击某个div时,会显示一个输入,所以我需要setTimeOut停止,直到他输入一些文本并按下ok,然后setTimeOut可以继续了。

请任何帮助都非常有用:)

2 个答案:

答案 0 :(得分:2)

使用clearTimeout

setTimeout返回一个id,可用于稍后判断超时操作。

直接来自MDN的副本,它应该是这样的;

var myVar;

function myFunction() {
    myVar = setTimeout(function(){ alert("Hello") }, 3000);
}

function myStopFunction() {
    clearTimeout(myVar);
}

如果你需要暂停超时而不是停止它,你需要自己计算剩余时间,然后用新的setTimeout开始新的超时清除第一个后

答案 1 :(得分:0)

setTimeout只是将操作安排在将来某个时间发生。

如果你只需要取消在超时发生的下一件事,那么你可以使用函数window.setTimeout返回的句柄来调用window.clearInterval,然后在将来的某个时候重新安排它。

如果您出于某种原因不想使用前面的方法,例如因为您不想重新安排时间间隔,那么您可以在闭包中创建一个标志来指示是否应该运行该函数。

var shouldHappen = true;
window.setTimeout(function(){
    if(shouldHappen){
        // Do some stuff. 
    }
}, 1000)