Maison >interface Web >js tutoriel >Comment puis-je m'assurer qu'une fonction appelée avec « setInterval » ne s'exécute qu'une seule fois ?

Comment puis-je m'assurer qu'une fonction appelée avec « setInterval » ne s'exécute qu'une seule fois ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-04 01:54:11478parcourir

How Can I Ensure a Function Called with `setInterval` Executes Only Once?

Gérer les fonctions planifiées avec setInterval et clearInterval

Considérez le fragment de code suivant :

function doKeyDown(event) {
    switch (event.keyCode) {
        case 32:
            /* Space bar was pressed */
            if (x == 4) {
                setInterval(drawAll, 20);
            }
            else {
                setInterval(drawAll, 20);
                x += dx;
            }
            break;
    }
}

L'objectif est de appelez la fonction drawAll une seule fois, ne créez pas de boucle qui invoque à plusieurs reprises it.

Utiliser clearInterval pour arrêter l'exécution récurrente

setInterval établit une minuterie récurrente qui appelle périodiquement la fonction spécifiée. Pour arrêter son exécution, nous pouvons utiliser clearInterval. Voici comment cela fonctionne :

var handle = setInterval(drawAll, 20);

// When you want to stop it:
clearInterval(handle);
handle = 0; // Indication of an uncleared interval

Sur les navigateurs, le handle est garanti comme étant une valeur numérique non nulle. Ainsi, définir handle = 0 sert d'indicateur pratique pour indiquer que l'intervalle a été effacé.

Planification d'un appel de fonction unique

Si l'intention est de exécutez une fonction une seule fois, envisagez plutôt d'utiliser setTimeout. Cette fonction planifie l'invocation d'une fonction après un intervalle de temps spécifié, mais ne continue pas à la déclencher par la suite. Il renvoie également une poignée pour une annulation potentielle.

setTimeout(drawAll, 20);

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn