clearTimeout和clearInterval是否相同
Are clearTimeout and clearInterval the same?
在为web应用程序编写某些Javascript时,我注意到我使用了setTimeout
,但我曾尝试用clearInterval
清除它,它阻止了Google Chrome和Internet Explorer 9中发生的超时。
clearTimeout
和clearInterval
可以互换吗?
这里有一个JSfiddle,里面有一个我正在谈论的例子。
事实上,我相信我们可以从W3C规范中得出一个相当有力的结论(http://www.w3.org/TR/html5/webappapis.html#timers)。它没有明确的保证,但我们有很多证据表明,几乎任何合理的实现都会有这种行为:
1) 超时和间隔实际上使用相同的底层功能:
setTimeout()方法必须返回计时器初始化步骤返回的值,并将方法的参数传递给它们。。。并且重复标志被设置为假。
setInterval()方法必须返回计时器返回的值初始化步骤,将方法的参数传递给它们。。。。以及repeat标志设置为true。
2) 这个单独的功能——上面提到的"计时器初始化步骤"——使用一个计时器列表:
2。。。让handle是用户代理定义的大于零的整数将在的列表中标识此调用要设置的超时活动定时器。
10、返回手柄。。。
3) clearTimeout()和clearInterval()都在该列表上操作(事实上,规范并没有以任何方式区分它们)
clearTimeout()和clearInterval()方法必须清除条目从的活动计时器列表中标识为句柄调用方法的WindowTimers对象,其中handle为传递给方法的参数(如果有的话)。(如果手柄没有在WindowTimers的活动计时器列表中标识一个条目对象,则该方法不执行任何操作。)
我相信这提供了一个相当有力的例子,根据规范,clearTimeout和clearInterval应该是同义词。事实证明,这在我测试的所有浏览器(Chrome 37、Firefox 33和Opera 25)中都有效。
当然,有些浏览器可能会以相同的方式共享相同的代码来清除间隔和超时,但这并不意味着它们是可互换的,而且你肯定不能保证它们在所有浏览器实现中都能正常工作。归根结底,这两种方法针对不同的目的进行了不同的定义,因此您应该将它们用于指定的用途。。否则,你就是在找麻烦。
来自Mozilla参考:
值得注意的是,setTimeout()和setInterval()是共享的,这意味着您可以在技术上使用clearTimeout()和clearInterval()可以互换。然而,对于清晰,你应该避免这样做。
即使它们现在可以作为同义词使用,在未来的任何时候都可能发生变化。你为什么不直言不讳呢
- 访问布局信息是否也会导致浏览器重排
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 如何检测是否有溢出
- jQuery中是否内置了任何字符串格式化函数
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- 测试索引值是否等于某个数字的倍数
- Fancybox是否将Click事件静音
- 主干-不管怎样,检查事件以前是否绑定过
- YUI3 IO实用程序是否可以根据给定的内容类型标头值自动序列化数据
- 是否有一个JS/jQuery函数可以获取某个类的每个元素的ID
- 节点是否需要模块传递带有方括号的arg?这是个错误吗
- 是否有任何方法可以使用jQuery替换在数组中定义值的文本
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 是否可以禁用jquery中的单个单选按钮
- 是否可以从父类访问子类的属性
- 是否可以控制获取哪些Google地图脚本(JavaScript API)
- 如何让程序检查所选单词中是否有按键
- 用于检查数组中是否存在元素的javascript自定义方法
- 是否可以对超出范围的 setInterval 变量调用 clearInterval 方法
- clearTimeout和clearInterval是否相同