javascript - Cum pot să șterg acest setInterval în interiorul unei funcții?


Normal, aș seta intervalul într-o variabilă și apoi l-aș șterge ca var the_int=setInterval(); clearInterval(the_int);, dar pentru ca codul meu să funcționeze l-am pus într-o funcție anonimă:

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

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

intervalTrigger();

Cum pot să șterg asta? Am încercat și am folosit var test=intervalTrigger(); clearInterval(test); ca să fiu sigur, dar nu a funcționat.

Practic, am nevoie ca acest lucru să înceteze să se declanșeze odată ce harta mea Google este făcută clic, de exemplu.

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

Răspuns #1

Metoda setInterval returnează un identificator pe care îl puteți folosi pentru a șterge intervalul. Dacă doriți ca funcția să îl returneze, trebuie doar să returnați rezultatul apelului metodei:

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

Apoi pentru a șterge intervalul:

window.clearInterval(id);

Răspunsul #2

// 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);
  }
}