Heim > Web-Frontend > CSS-Tutorial > Wie stoppt man eine „setTimeout'- oder „setInterval'-Schleife in JavaScript?

Wie stoppt man eine „setTimeout'- oder „setInterval'-Schleife in JavaScript?

Mary-Kate Olsen
Freigeben: 2024-12-13 16:59:10
Original
776 Leute haben es durchsucht

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

Stoppen einer setTimeout-Schleife

Im bereitgestellten Code wird eine setTimeout-Schleife verwendet, um die Hintergrundposition eines Bild-Sprites kontinuierlich festzulegen und so zu erstellen eine Ladeanimation. Es muss jedoch gesteuert werden, wann die Schleife gestoppt wird, sobald der Ladevorgang abgeschlossen ist.

Die Lösung besteht darin, das von setTimeout zurückgegebene Timer-Handle zu verwenden. Dieses Handle kann in Verbindung mit clearTimeout verwendet werden, um die Zeitüberschreitung zu stoppen.

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;
        }
    }
}
Nach dem Login kopieren

Dieser überarbeitete Code definiert eine Stoppfunktion innerhalb von setBgPosition. Die Stop-Funktion prüft, ob das Timer-Handle vorhanden ist, und löscht es gegebenenfalls mit „clearTimeout“. Der aktualisierte Code kann wie folgt verwendet werden:

var stop = setBgPosition();
// ...later, when you're ready to stop...
stop();
Nach dem Login kopieren

Alternativ kann setInterval anstelle von setTimeout verwendet werden, um eine Wiederholungsschleife zu erstellen. setInterval erfordert jedoch clearInterval, um die Schleife zu stoppen.

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);
}
Nach dem Login kopieren

Dieser Code kann wie folgt verwendet werden:

var timer = setBgPosition();
// ...later, when you're ready to stop...
clearInterval(timer);
Nach dem Login kopieren

Abschließend wird empfohlen, die Verwendung einer Bedingung innerhalb von setBgPosition selbst zur Erkennung in Betracht zu ziehen den Abschluss des Ladevorgangs und stoppt die Schleife automatisch.

Das obige ist der detaillierte Inhalt vonWie stoppt man eine „setTimeout'- oder „setInterval'-Schleife in JavaScript?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage