【问题标题】:JavaScript clearTimeout seems to have a strange behaviour [duplicate]JavaScript clearTimeout 似乎有一个奇怪的行为[重复]
【发布时间】:2016-05-27 14:44:55
【问题描述】:

阅读上一个关于 JavaScript 中 setInterval 方法的问题时,我在笔记本上指出了以下问题:

setTimeout()

在 IE11、FF46 和 Chrome51 中正常工作,因此停止间隔。

在 MDN 文档中,clearTimeout 是这样描述的:

清除 WindowTimers.setTimeout() 设置的延迟。

为什么? clearTimeout 和 clearInterval 可以互换吗?

【问题讨论】:

  • 如果是,那么这是一个内部实现细节,你绝对不应该依赖它。
  • clearInterval()setInterval() 一起使用,clearTimeout()setTimeout() 一起使用。如果 clearTimeout() 恰好在某些平台上与 setInterval() 一起工作,那么这只是实现的一个意外,而不是值得依赖的东西。

标签: javascript


【解决方案1】:

clearTimeout 和 clearInterval 不能互换,因为它们分别是为 setTimeout 和 setInterval 设计的。此外,setTimeout 和 setInterval 都做了不同的事情:setTimeout 告诉一组命令等到执行,并且只执行一次,而 setInterval 重复执行,直到时间结束(当然,除非您调用 clearInterval)。 clearTimeout 将导致 setTimeout 在超时到期之前触发,而 clearInterval 将停止 setInterval 循环。

虽然它可能适用于一种浏览器,但不能保证适用于所有浏览器实现,因此应避免使用。

注意

javascript stackoverflow 中也提到了这一点。 Are clearTimeout and clearInterval the same?

【讨论】:

    猜你喜欢
    • 2017-10-19
    • 1970-01-01
    • 2020-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多