70 votes

Comment effacer tous les intervalles ?

j'utilise

 varName = setInterval(function() { ... }, 1000);

pour définir quelques intervalles dans un plugin jquery que j'écris, mais lorsque le plugin est rechargé, je dois effacer ces intervalles. J'ai essayé de les stocker dans des variables, comme ceci :

 (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();

Et j'ai essayé de tuer ces intervalles dans la fonction base.init(), comme ceci :

 clearInterval(transitionInterval);
clearInterval(mainInterval);

Et comme ça :

 window.oldSetInterval = window.setInterval;
window.setInterval = new function(func, interval) {  }

91voto

Sudhir Points 50854

Tu pourrais faire comme,

 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

21voto

Shujaath Khan Points 827

Initialisez Timer et définissez-le comme objet fenêtre. Window.myInterval contiendra l'ID de la minuterie.

comme window.myInterval = setInterval(function() { console.log('hi'); }, 1000);

Pour effacer l'intervalle, vous pouvez écrire comme

 if(window.myInterval != undefined && window.myInterval != 'undefined'){
    window.clearInterval(window.myInterval);
    alert('Timer cleared with id'+window.myInterval);
}

4voto

ashish siddhu Points 11

Lorsque vous définissez un intervalle, vous obtenez un pointeur vers celui-ci. Pour effacer tous les intervalles, vous devrez tous les stocker :

 // Initially
var arr = [];
arr.push(setInterval(function () {
    console.log(1);
  }, 1000));
arr.push(setInterval(function () {
    console.log(2);
  }, 1000));
arr.push(setInterval(function () {
    console.log(3);
  }, 1000));
  

La boucle suivante effacera tous les intervalles

 // Clear multiple Intervals
  arr.map((a) => {
    console.log(a)
    clearInterval(a);
    arr = [];
  })

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X