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
});
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);
// 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);
}
}
the_int=window.clearInterval(the_int);