Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 取消/终止window.setTimeout(),然后再执行此操作_Javascript_Jquery - Fatal编程技术网

Javascript 取消/终止window.setTimeout(),然后再执行此操作

Javascript 取消/终止window.setTimeout(),然后再执行此操作,javascript,jquery,Javascript,Jquery,例如,我在一些地方使用下面的行来清除状态。我有一些会持续10秒或更长时间,如果用户点击,操作可能会以错误的时间间隔发生 window.setTimeout(function() { removeStatusIndicator(); }, statusTimeout); 有没有可能用一些jQuery或JavaScript代码取消或终止这个过程,这样我就没有这个过程了?窗口。clearTimeout()应该可以实现您想要实现的功能。窗口只是全局名称空间的名称,所以实际上不需要它(对于setTime

例如,我在一些地方使用下面的行来清除状态。我有一些会持续10秒或更长时间,如果用户点击,操作可能会以错误的时间间隔发生

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

有没有可能用一些jQuery或JavaScript代码取消或终止这个过程,这样我就没有这个过程了?

窗口。clearTimeout()应该可以实现您想要实现的功能。

窗口只是全局名称空间的名称,所以实际上不需要它(对于setTimeout或clearTimeout)。由于setTimeout的第一个参数是函数,而“removeStatusIndicator()”是函数,因此您可以通过以下简单方式获得性能(并减少键入):var timer1=setTimeout(removeStatusIndicator,statusTimeout);这避免了嵌套函数调用。而
窗口。clearTimeout(timer1)
在Node.js中不起作用。只需使用
clearTimeout(timer1)
global.clearTimeout(timer1)
@user1944491不会有双重调用:请注意@HarleyDave编写了
setTimeout(removeStatusIndicator,…)
,即没有调用函数
removeStatusIndicator
。请忽略@user1944491所说的内容——这是错误的。传递给setTimeout的函数不会被调用两次。Chrome没有改变它的行为,很可能是你调用函数
setTimeout(func(),0)
而不是
setTimeout(func,0)
搞砸了。请解释你的答案并给出一些例子。一个好的答案总是会有一个解释,说明做了什么以及为什么这样做,不仅是为了OP,而且是为了SO的未来访客。+1只是因为上面的评论对我来说绝对不相关和随机。答案看起来非常好,只是后来才发布,所以它更像是已经提供答案的“复制粘贴”。-1:2016年的答案遗漏了很多重要细节,没有提到2009年被接受的答案没有提到的任何内容。
var timer1 = setTimeout(function() { removeStatusIndicator(); }, statusTimeout);

clearTimeout(timer1)