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
Freigeben: 2024-12-19 11:33:09
Original
430 Leute haben es durchsucht

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

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

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!

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