首先,我写这个问题是因为那里的其他答案对我没有帮助。
我有一个运行setTimeOut函数的页面,当用户点击某个div时,会显示一个输入,所以我需要setTimeOut停止,直到他输入一些文本并按下ok,然后setTimeOut可以继续了。
请任何帮助都非常有用:)
答案 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)