Heim >Web-Frontend >js-Tutorial >Wie füge ich mit setTimeout() ordnungsgemäß Verzögerungen zu JavaScript-Schleifen hinzu?

Wie füge ich mit setTimeout() ordnungsgemäß Verzögerungen zu JavaScript-Schleifen hinzu?

Barbara Streisand
Barbara StreisandOriginal
2024-12-19 11:33:09484Durchsuche

How to Properly Add Delays to JavaScript Loops Using setTimeout()?

So fügen Sie eine Verzögerung in einer JavaScript-Schleife mit Timeouts hinzu

In JavaScript kann das Hinzufügen einer Verzögerung innerhalb einer Schleife mithilfe von setTimeout erreicht werden ()-Funktion. Es ist jedoch wichtig, sein Verhalten zu verstehen, um unerwartete Ergebnisse zu vermeiden.

Betrachten Sie das folgende Beispiel:

alert('hi');

for (var start = 1; start < 10; start++) {
  setTimeout(function() {
    alert('hello');
  }, 3000);
}

Dieser Code zielt darauf ab, eine Warnung mit dem Text „Hallo“ anzuzeigen und dann die anzuzeigen Text „Hallo“ nach einer Verzögerung von 3 Sekunden, wobei sich die Verzögerung für nachfolgende Iterationen wiederholt. In der Praxis funktioniert jedoch nur die erste Iteration wie vorgesehen.

Der Grund für dieses Verhalten liegt in der nicht blockierenden Natur von setTimeout(). Es löst einen Timer aus, kehrt jedoch sofort zurück, sodass die Schleife weiter ausgeführt werden kann, bevor die Verzögerung von 3 Sekunden auftreten kann. Dies führt zu einem sofortigen „Hallo“-Alarm und einer kontinuierlichen Anzeige nachfolgender Alarme ohne Verzögerung.

Um den gewünschten Effekt zu erzielen, kann ein alternativer Ansatz verwendet werden:

var i = 1; // set your counter to 1

function myLoop() { // create a loop function
  setTimeout(function() { // call a 3s setTimeout when the loop is called
    console.log('hello'); // your code here
    i++; // increment the counter
    if (i < 10) { // if the counter < 10, call the loop function
      myLoop(); // .. again which will trigger another 
    } // .. setTimeout()
  }, 3000);
}

myLoop(); // start the loop

Hierbei Bei diesem Ansatz wird innerhalb der Schleife ein Zähler initialisiert und erhöht. Die Schleifenfunktion wird innerhalb von setTimeout() aufgerufen und stellt sicher, dass jede Iteration vor der Ausführung eine eigene Verzögerung von 3 Sekunden hat. Durch die Aufrechterhaltung der Schleife innerhalb des Rückrufs von setTimeout() wird das gewünschte Intervall zwischen den Warnungen erreicht.

Das obige ist der detaillierte Inhalt vonWie füge ich mit setTimeout() ordnungsgemäß Verzögerungen zu JavaScript-Schleifen hinzu?. 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