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

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

Barbara Streisand
Barbara StreisandOriginal
2024-12-01 09:26:15117Durchsuche

How to Stop a `setTimeout` Loop in JavaScript?

So steuern Sie die Ausführung einer setTimeout-Schleife

Sie versuchen, einen Ladeindikator mithilfe eines Sprite-Bildes zu erstellen, und sind darauf gestoßen Es gibt ein Problem, bei dem die Schleife gestoppt wird, sobald der Ladevorgang abgeschlossen ist. Die von Ihnen bereitgestellte Funktion initiiert eine setTimeout-Schleife, die in bestimmten Intervallen ein Array von Werten durchläuft. Die Herausforderung besteht darin, diese Schleife programmgesteuert zu stoppen.

Um dieses Problem zu beheben, können Sie das von setTimeout zurückgegebene Timer-Handle verwenden. Anschließend können Sie „clearTimeout“ verwenden, um den Timeout-Vorgang anzuhalten.

Hier ist eine modifizierte Version Ihres Codes, die diese Technik beinhaltet:

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();

Durch Zuweisen des Timer-Handles zur Timer-Variablen können Sie dies tun Referenzieren und löschen Sie es mit „clearTimeout“, wenn der Ladevorgang abgeschlossen ist.

Darüber hinaus lohnt es sich, die Verwendung von „setInterval“ anstelle von „setTimeout“ in Betracht zu ziehen Szenarien, in denen eine wiederholte Ausführung gewünscht ist. Dies kann den Code vereinfachen und eine robustere Lösung bieten.

Denken Sie daran, geeignete Mechanismen innerhalb von setBgPosition selbst zu implementieren, um zu erkennen, wann die Schleife enden sollte, um eine eigenständige und autonome Funktion sicherzustellen.

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

Stellungnahme:
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