Iva*_*van 39 javascript clearinterval
在处理Web应用程序的某些Javascript时,我注意到我曾使用过setTimeout,但我曾试图清除它,clearInterval并且它在Google Chrome和Internet Explorer 9中停止了超时.
是clearTimeout和clearInterval互换?
这是一个JSfiddle,有一个我正在谈论的例子.
lem*_*ant 26
其实我认为,我们可以从W3C规范(一个相当强的结论http://www.w3.org/TR/html5/webappapis.html#timers).它没有明确保证,但我们有很多证据表明几乎任何合理的实现都会产生这种行为:
1)超时和间隔实际上使用相同的基础功能:
setTimeout()方法必须返回定时器初始化步骤返回的值,并将方法的参数传递给它们,并将repeat标志设置为false.
setInterval()方法必须返回定时器初始化步骤返回的值,并将方法的参数传递给它们,并将repeat标志设置为true.
2)这个单一功能 - 上面提到的"定时器初始化步骤" - 使用一个定时器列表:
2,... let handle是一个大于零的用户代理定义的整数,它将在活动定时器列表中标识此调用设置的超时.
10,退货处理......
3)clearTimeout()和clearInterval()都在该列表上运行(实际上并没有以任何方式区分规范)
所述clearTimeout()和clearInterval()方法必须清除识别为手柄从WindowTimers的活性定时器的列表中的条目对象在其上调用的方法,其中手柄是传递给该方法的参数,如果有的话.(如果句柄未标识调用该方法的WindowTimers对象的活动计时器列表中的条目,则该方法不执行任何操作.)
我相信这提供了一个相当强烈的案例,clearTimeout和clearInterval应该根据规范同义.事实证明,这适用于我测试过的所有浏览器(Chrome 37,Firefox 33和Opera 25).
rgt*_*ree 23
不,他们不可互换.
当然,有些浏览器可能会以相同的方式共享相同的代码以清除间隔和超时,但这并不意味着它们是可互换的,并且您肯定不能保证它们在所有浏览器实现中都能正常工作.归结为这两种方法的定义不同,用于不同的目的,因此你应该将它们用于指定用途.否则,你只是在寻找麻烦.
| 归档时间: |
|
| 查看次数: |
11475 次 |
| 最近记录: |