Nik*_*kov 41 javascript jquery set
我在用
varName = setInterval(function() { ... }, 1000);
在我正在编写的jquery插件中设置几个间隔,但是当重新加载插件时,我需要清除这些间隔.我尝试将它们存储在变量中,如下所示:
(function($){
$.mosaicSlider = function(el) {
    var base = this;        
    var transitionInterval, mainInterval;
...
base.init = function() {
    mainInterval = setInverval(function() { ... }, 1000);
}
base.grid = function() {
    this.transition() = function() {
         transitionInterval = setInterval(function(...) {
    }
}
base.init();
我尝试在base.init()函数中杀死这些间隔,如下所示:
clearInterval(transitionInterval);
clearInterval(mainInterval);
像这样:
window.oldSetInterval = window.setInterval;
window.setInterval = new function(func, interval) {  }
Zir*_*rak 59
将它们存储在一个对象中.由于你是唯一一个制作这些间隔的人,并且你知道它们是什么,你可以存储它们,然后随意弄乱它们.我会创建一个专门用于此的对象,例如:
var interval = {
    // to keep a reference to all the intervals
    intervals : new Set(),
    // create another interval
    make(...args) {
        var newInterval = setInterval(...args);
        this.intervals.add(newInterval);
        return newInterval;
    },
    // clear a single interval
    clear(id) {
        this.interals.delete(id);
        return clearInterval(id);
    },
    // clear all intervals
    clearAll() {
        for (var id of this.intervals) {
            this.clear(id);
        }
    }
};
你的第一个问题可能是
为什么要为此单独制作一个对象?
好的Watson,这是为了让你的插件/项目的手工间隔远离窥探,所以你不会弄乱在与你的插件无关的页面中设置的其他间隔.
是的,但为什么我不能将它存储在基础对象中?
你当然可以,但我认为这种方式更清洁.它将您在基础中执行的逻辑与奇怪的超时逻辑分开.
为什么将间隔存储在Set而不是数组中?
更快的访问和一些更清洁的代码.你可以去任何一种方式,真的.
Sud*_*oti 48
你可以这样做,
var interval_id = window.setInterval("", 9999); // Get a reference to the last
                                                // interval +1
for (var i = 1; i < interval_id; i++)
        window.clearInterval(i);
//for clearing all intervals
小智 9
初始化Timer并将其设置为窗口对象.Window.myInterval将保存Timer的ID.
喜欢 window.myInterval = setInterval(function() { console.log('hi'); }, 1000);
要清除Interval,你可以这样写
if(window.myInterval != undefined && window.myInterval != 'undefined'){
    window.clearInterval(window.myInterval);
    alert('Timer cleared with id'+window.myInterval);
}
| 归档时间: | 
 | 
| 查看次数: | 67220 次 | 
| 最近记录: |