J'ai le code suivant:
var focusIntervalObj = setInterval(function(){
focusDelayCaused++;
console.log(focusDelayCaused);
}, 100);
clearInterval(focusIntervalObj);
J'ai un firebug installé.
Je m'attends à ce que ce code enregistre la valeur de focusDelayCaused
.
Mais quand j'exécute, ce n'est pas le cas, et le clearInterval()
renvoie simplement non défini.
Veuillez guider.
3 réponses
Vous définissez l'intervalle et l'effacez avant qu'il ne se déclenche.
var focusIntervalObj = setInterval(function(){
focusDelayCaused++;
console.log(focusDelayCaused);
clearInterval(focusIntervalObj);
}, 100);
C'est peut-être ce que vous pensez. Ce qui serait plus simple comme:
var focusIntervalObj = setTimeout(function(){
focusDelayCaused++;
console.log(focusDelayCaused);
}, 100);
En suivant le code ci-dessus, vous effacez immédiatement un intervalle juste après l'avoir défini. Il n'a donc jamais la chance de courir.
Effacer l'intervalle après qu'une sorte de condition a été remplie plutôt qu'immédiatement après le réglage, cela aiderait.
if (focusDelayCaused>50) {
clearInterval(focusIntervalObj);
}
Si vous voulez qu'une fonction soit exécutée une fois et jamais, utilisez setTimeout, dans votre cas:
var focusIntervalObj = setTimeout(function(){
focusDelayCaused++;
console.log(focusDelayCaused);
}, 100);
Questions connexes
De nouvelles questions
javascript
Pour des questions concernant la programmation dans ECMAScript (JavaScript / JS) et ses divers dialectes / implémentations (hors ActionScript). Veuillez inclure toutes les balises pertinentes dans votre question; par exemple, [node.js], [jquery], [json], etc.