Maison > interface Web > tutoriel CSS > Comment arrêter une boucle `setTimeout` en JavaScript ?

Comment arrêter une boucle `setTimeout` en JavaScript ?

Barbara Streisand
Libérer: 2024-12-01 09:26:15
original
111 Les gens l'ont consulté

How to Stop a `setTimeout` Loop in JavaScript?

Comment contrôler l'exécution d'une boucle setTimeout

Vous essayez de créer un indicateur de chargement à l'aide d'une image de sprite et vous avez rencontré un problème arrêtant la boucle une fois le chargement terminé. La fonction que vous avez fournie lance une boucle setTimeout qui parcourt un tableau de valeurs à des intervalles spécifiés. Le défi réside dans l'arrêt de cette boucle par programme.

Pour résoudre ce problème, vous pouvez utiliser le handle de minuterie renvoyé par setTimeout. Vous pouvez ensuite utiliser clearTimeout pour arrêter l'opération de timeout.

Voici une version modifiée de votre code qui intègre cette technique :

function setBgPosition() {
    var c = 0,
        timer = 0;
    var numbers = [0, -120, -240, -360, -480, -600, -720];
    function run() {
        Ext.get('common-spinner').setStyle('background-position', numbers[c++] + 'px 0px');
        if (c >= numbers.length) {
            c = 0;
        }
        timer = setTimeout(run, 200);
    }
    timer = setTimeout(run, 200);

    return stop;

    function stop() {
        if (timer) {
            clearTimeout(timer);
            timer = 0;
        }
    }
}

var stop = setBgPosition();
// ...later, when you're ready to stop...
stop();
Copier après la connexion

En attribuant le handle du timer à la variable timer, vous pouvez référence et effacez-le en utilisant clearTimeout lorsque le chargement est terminé.

De plus, il vaut la peine d'envisager d'utiliser setInterval au lieu de setTimeout dans scénarios où une exécution répétitive est souhaitée. Cela peut simplifier le code et fournir une solution plus robuste.

N'oubliez pas d'implémenter les mécanismes appropriés dans setBgPosition lui-même pour détecter le moment où la boucle doit se terminer afin de garantir une fonction autonome et autonome.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal