这是 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/