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

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

Mary-Kate Olsen
Libérer: 2024-12-13 16:59:10
original
790 Les gens l'ont consulté

How to Stop a `setTimeout` or `setInterval` Loop in JavaScript?

Arrêter une boucle setTimeout

Dans le code fourni, une boucle setTimeout est utilisée pour définir en continu la position d'arrière-plan d'un sprite d'image, créant une animation de chargement. Cependant, il est nécessaire de contrôler quand la boucle est arrêtée une fois le chargement terminé.

La solution consiste à utiliser le handle de minuterie renvoyé par setTimeout. Cette poignée peut être utilisée conjointement avec clearTimeout pour arrêter le délai d'attente.

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;
        }
    }
}
Copier après la connexion

Ce code révisé définit une fonction d'arrêt dans setBgPosition. La fonction stop vérifie si la poignée de minuterie est présente et, si c'est le cas, l'efface avec clearTimeout. Le code mis à jour peut être utilisé comme suit :

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

Alternativement, setInterval peut être utilisé à la place de setTimeout pour créer une boucle répétitive. Cependant, setInterval nécessite clearInterval pour arrêter la boucle.

function setBgPosition() {
    var c = 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;
        }
    }

    return setInterval(run, 200);
}
Copier après la connexion

Ce code peut être utilisé comme suit :

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

Enfin, il est recommandé d'envisager d'utiliser une condition dans setBgPosition lui-même pour détecter l'achèvement du processus de chargement et arrêter automatiquement la boucle.

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