在它发生之前取消/杀死 window.setTimeout()

IT技术 javascript jquery
2021-01-24 00:42:05

例如,我有几个地方使用下面的行来清除状态。我有一些这样的挂起 10 秒或更长时间,如果用户点击操作可能会在不正确的时间间隔内发生。

window.setTimeout(function() { removeStatusIndicator(); }, statusTimeout);

是否可以用一些 jQuery 或 JavaScript 代码取消或终止它,所以我没有这个过程?

2个回答
var timer1 = setTimeout(function() { removeStatusIndicator(); }, statusTimeout);

clearTimeout(timer1)
并且window.clearTimeout(timer1)不会在 Node.js 中工作。无论是使用clearTimeout(timer1)还是global.clearTimeout(timer1)
2021-03-26 00:42:05
@user1944491 不会有双重调用:注意@HarleyDave 写的setTimeout(removeStatusIndicator, ...),即函数removeStatusIndicator没有被调用。
2021-03-27 00:42:05
由于 setTimeout 的第一个参数是一个函数,而 'removeStatusIndicator()' 是一个函数,您可以通过简单的方式获得性能(并减少类型): var timer1 = setTimeout(removeStatusIndicator, statusTimeout); 这避免了嵌套的函数调用。
2021-04-01 00:42:05
请忽略@user1944491 在说什么——这是错误的。传递给 setTimeout 的函数不会被调用两次。Chrome 没有改变它的行为,更有可能是你通过调用函数setTimeout( func(), 0 )而不是setTimeout( func, 0 )
2021-04-04 00:42:05
window 只是全局命名空间的名称,因此它并不是真正必要的(对于 setTimeout 或 clearTimeout)。
2021-04-10 00:42:05

window.clearTimeout()应该做你想要达到的目的。

请解释你的答案并举一些例子。一个好的答案总是会解释做了什么以及为什么以这种方式完成,不仅对于 OP,而且对于 SO 的未来访问者。
2021-03-14 00:42:05
+1 只是因为上面的评论对我来说看起来完全不相关和随机。答案看起来非常好,它只是稍后发布,所以它更像是已经提供的答案的“复制粘贴”。
2021-04-02 00:42:05
-1:2016 年的这个答案遗漏了许多重要的细节,并且没有说明 2009 年的公认答案尚未说明的内容。
2021-04-11 00:42:05