38 votes

Puis-je appeler clearInterval dans un gestionnaire setInterval?

J'ai un morceau de code Javascript qui vérifie la condition (via un appel AJAX) toutes les n secondes. Si cette condition est vraie, il arrête la vérification. J'ai implémenté de la manière suivante:

var stopTimer;
var timerId = setInterval(function() {

    /* Make Ajax Calls and set stopTimer */

    if (stopTimer) {
        clearInterval(timerId);
    }
}, 10000);

Cependant, je trouve le comportement erratique: Fonctionne parfois, mais à d'autres moments, il continue à vérifier pour toujours. J'ai vérifié que le (autant que possible) il n'y a pas d'erreur dans une partie du code.

Je suis donc se douter que l'appel à la fonction clearInterval à l'intérieur d'un setInterval gestionnaire pourrait être le coupable. Est ce que le droit? Est-il OK pour appeler la fonction clearInterval à l'intérieur d'un setInterval gestionnaire?

Je vous remercie pour votre attention

19voto

SpliFF Points 21945

C'est sur. Le problème est probablement lié au fait que stopTimer ne soit pas configuré comme prévu.

3voto

rahul Points 84185

Je ne pense pas que votre code posera problème, à moins que la fonction AJAX soit erronée. Vous devez prendre en charge les rappels de succès et d’erreur de la fonction AJAX afin qu’il n’y ait pas de problème de non-interruption de la boucle.

De plus, je pense que vous interrogez constamment le serveur pour obtenir une réponse, puis que vous prenez les mesures appropriées. Vous pouvez utiliser Reverse AJAX pour effectuer ce type de processus.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X