javascript - Javascript Timeout 对象到底是什么?

标签 javascript settimeout dom-events

这是包含一些示例代码的链接。

http://jsfiddle.net/4djNt/2/

在开始测试之前,我假设 setTimeout() 的返回值是某种浏览器对象。

事实上它似乎是一个简单的整数。我还认为将 setTimeout 的返回值分配给全局变量意味着只能有一个这样的对象。但是,正如您将看到的,如果您多次单击“启动计时器”按钮,则可能会有多个计时器同时运行。

例如

  • 我点击开始按钮
  • 脚本创建超时
  • 现在是超时 1,因为五秒后会发生
  • 一秒钟后,我再次点击,现在出现了超时 2
  • 现在,由于四秒内发生火灾,我发生了超时 1,并且在五秒内发生了超时 2
  • 我点击停止按钮,只有 timeout 2 被清除

用户点击创建多个计时器的问题可以通过在设置之前始终清除当前超时变量来解决。但我真的很想了解 Javascript 在这里实际上在做什么。

最佳答案

setTimeoutsetInterval返回一个数字。该数字是计时器的id。可以使用 clearTimeout 停止事件计时器和 clearInterval分别。

如果您丢失了计时器的 ID,您要么必须再次猜测,要么等待它完成(假设超时)。

如果定时器在delay参数指定的毫秒数内没有被取消,它将在全局上下文中执行回调函数。

关于javascript - Javascript Timeout 对象到底是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13079869/

相关文章:

javascript - 使用麦克风输入意外结束

javascript - 多个 Controller 操纵 Angular 指令中的内容?

javascript - 获取数据的正确方法 - React

javascript - 使用 addEventListener Javascript 重置 setTimeout

Javascript:如何在 onClick 完成之前更新页面?

javascript - 使用服务更新 2 个 Controller 之间的共享数据

javascript - 解析该网站的正确方法是什么?

javascript - 我的 Greasemonkey 脚本中的 setInterval() 忽略给定的时间并不断执行

jquery - 主干点击事件中断

javascript - Linux 下的 Firefox 15.0.1 中未触发 transitionend 事件