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.

0
linuxeasy 13 oct. 2011 à 19:19

3 réponses

Meilleure réponse

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);
3
Joe 13 oct. 2011 à 15:22

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);
}
1
James 13 oct. 2011 à 15:26

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);
0
Adilson de Almeida Jr 13 oct. 2011 à 15:24