web-dev-qa-db-fra.com

Comment effacer cette setInterval dans une fonction?

Normalement, je définissais l'intervalle sur une variable, puis l'effaçais comme var the_int = setInterval(); clearInterval(the_int);, mais pour que mon code fonctionne, je le plaçais dans une fonction anonyme:

function intervalTrigger() {
  setInterval(function() {
    if (timedCount >= markers.length) {
      timedCount = 0;
    }

    google.maps.event.trigger(markers[timedCount], "click");
    timedCount++;
  }, 5000);
};

intervalTrigger();

Comment puis-je effacer cela? J’ai essayé et essayé var test = intervalTrigger(); clearInterval(test); pour en être sûr, mais cela n’a pas fonctionné.

De manière générale, j’ai besoin que cela arrête de déclencher une fois que ma carte Google est cliquée, par exemple.

google.maps.event.addListener(map, "click", function() {
  //stop timer
});
161
Oscar Godson

La méthode setInterval renvoie un descripteur que vous pouvez utiliser pour effacer l'intervalle. Si vous voulez que la fonction la retourne, il vous suffit de renvoyer le résultat de l'appel de la méthode:

function intervalTrigger() {
  return window.setInterval( function() {
    if (timedCount >= markers.length) {
       timedCount = 0;
    }
    google.maps.event.trigger(markers[timedCount], "click");
    timedCount++;
  }, 5000 );
};
var id = intervalTrigger();

Ensuite, pour effacer l'intervalle:

window.clearInterval(id);
260
Guffa
// Initiate set interval and assign it to intervalListener
var intervalListener = self.setInterval(function () {someProcess()}, 1000);
function someProcess() {
  console.log('someProcess() has been called');
  // If some condition is true clear the interval
  if (stopIntervalIsTrue) {
    window.clearInterval(intervalListener);
  }
}
10
Marian Zburlea
the_int=window.clearInterval(the_int);
1
Anup