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

Stop and resume Javascript execution when condition is true

本文关键字:恢复 Javascript 执行 条件      更新时间:2023-09-26

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

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

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

使用 clearTimeout

setTimeout 返回一个 id,该 id 可用于稍后执行超时操作。

作为直接来自 MDN 的副本,它应该看起来像这样;

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

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

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

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

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

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