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