【发布时间】:2014-08-07 22:05:24
【问题描述】:
在我们的代码中的几个地方,我们做了这样的事情:
eventGrabber.poller = setInterval(grabEvents, 50);
每 50 毫秒调用一次 grabEvents 方法。但是,由于我们在不止一个地方执行此操作,我想知道grabEvents 是否比每50 毫秒更频繁地调用一次。换句话说,如果我这样做:
eventGrabber.poller = setInterval(grabEvents, 50);
//wait 25 ms here
eventGrabber.poller = setInterval(grabEvents, 50);
现在会不会有两个计时器每 25 毫秒运行一次调用 grabEvents(其中一个我们永远无法停止,因为我们失去了它的句柄)?
将我们所有的调用更改为类似这样的方法是否可以解决这个问题(如果它确实是一个问题):
//if there is a timer running clear it out first
clearInterval(eventGrabber.poller); //if poller is null does it matter??
//now start the timer
eventGrabber.poller = setInterval(grabEvents, 50);
【问题讨论】:
-
现代浏览器可能会在不再使用间隔时进行垃圾收集,但无论如何手动清除它是个好习惯
-
@adeneo 关键是第一个 setInterval 仍在使用中,即使在您开始第二个之后也是如此。
-
@Christophe - 当然会,但这应该很容易弄清楚 -> jsfiddle.net/adeneo/r38zj6xz
-
@adeneo 那么垃圾收集在这里有什么帮助?
标签: javascript setinterval clearinterval