所以,我有一个包含大量setTimeout
和setInterval
的脚本。
我的问题是当我使用clearInterval
方法时,我想知道方法是否在触发后停止了该函数,或者该方法是否肯定删除了触发事件。对我来说非常重要的是要知道,如果clearInterval
没有删除触发事件,计算机会继续调用很多可能导致计算机速度变慢的事件。
我的代码有点长,在本文中完全列出,但我使用setInterval
这样:
teste = [];
teste.push (window.setInterval (function () {Do stuff...}, 20));
// The same for window.setTimeout();
触发clearInterval
方法可以阻止:
window.setInterval (function () {
/*Here after firing or can stop the firing event*/
Do stuff...
}, 20);
我删除了setInterval
,如下所示:
window.clearInterval (teste [teste.length-1]); // The same for window.clearTimeout ();
感谢任何帮助,
如果您有任何问题或意见,请告诉我。
由于
答案 0 :(得分:0)
我会在这里使用不同的方法:
var queue = [];
function prepare (fx, delay, repeated) {
return {
fx: fx,
at: new Date().getTime() + delay,
repeated: !!repeated
}
}
queue.push(prepare(function () {…}, 20));
.
queue.push(prepare(function () {…}, 20), true);
.
.
.
window.setTimeout(function check() {
var now = new Date().getTime(),
newQueue = [],
i = 0, entry;
for (; i < queue.length; i++) {
entry = queue[i];
if (entry.at <= now) {
entry.fx();
if (entry.repeated) newQueue.push(entry);
} else {
newQueue.push(entry);
}
}
queue = newQueue;
window.setTimeout(check, 1);
}, 1);
这样,您只有一个计时器/间隔在运行,因此可以完全控制所调用的内容并进行调用。此外,JS Event Queue不会出现任何问题,可能会及时运行。