javascript - 在 MDN setInterval 示例中 var IntervalID 如何工作?

标签 javascript firefox setinterval

这是 window.setInterval 的 Mozilla 开发者网络示例

var intervalID = window.setInterval(func, delay[, param1, param2, ...]);
var intervalID = window.setInterval(code, delay);

(可以在这里找到:https://developer.mozilla.org/en/DOM/window.setInterval)

我更习惯于编译这些类型算法的 Java 编程,所以我的问题是:

intervalID 是如何工作的?似乎有某种递归函数在幕后进行,但这完全是猜测 - 它是如何构造的,并且该结构(大概很大)是否存储为 IntervalID,等待 clearInterval(intervalID)?

最佳答案

我只是假设您想知道它在 Firefox 浏览器中的工作原理(每个浏览器都有自己的相同方法的实现)。实现可以在nsGlobalWindow::SetTimeoutOrInterval()中找到。它实际上非常简单。每个窗口都有一个未完成的超时列表,当您调用 window.setInterval() 时,会生成一个新的 timeout structure已创建并添加到该列表中。超时结构包含对 timer object 的引用每当需要调用回调时,它将通知窗口。它有一个 mPublicId 成员,它只是一个数字 - 它会随着每次创建的新超时而递增,并由 setInterval() 返回。当您调用 clearInterval() 时,它将在列表中查找具有匹配 ID 的超时并将其删除。

关于javascript - 在 MDN setInterval 示例中 var IntervalID 如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11393167/

相关文章:

javascript - 这个Javascript如何表达得更简洁呢?

javascript - 转义 HTML 标签。字符集编码可能存在任何问题吗?

javascript - 替换每次出现的 [b : "text"] to <b>text</b> where text can be anything

firefox - 在 NoScript 上全局允许 Cloudfront

css - Firefox 不呈现 Open Sans、sans-serif、字体大小 : 11 properly

javascript - 每 15 秒读取一个文本文件的内容

javascript - 使用 webSocket 向特定连接的用户发送消息?

css - 添加指针事件后光标重置为默认值 :none in Firefox

JavaScript/jQuery 间隔在 Internet Explorer 中执行两次

javascript - 无法每 5 秒下载一次图像