Heim > Web-Frontend > js-Tutorial > Wie implementiert man eine Verzögerung in einer JavaScript-Schleife richtig?

Wie implementiert man eine Verzögerung in einer JavaScript-Schleife richtig?

Linda Hamilton
Freigeben: 2024-12-23 05:15:13
Original
841 Leute haben es durchsucht

How to Properly Implement a Delay in a JavaScript Loop?

Hinzufügen einer Verzögerung in einer JavaScript-Schleife

In JavaScript kommt es häufig zu Szenarios, in denen eine Verzögerung innerhalb einer Schleife erforderlich ist, um die Ausführungsgeschwindigkeit zu steuern. Die Implementierung dieser Verzögerung kann jedoch schwierig sein.

Ursprünglicher Ansatz und seine Fallstricke

Anfangs wurde der folgende Code verwendet, um eine Verzögerung von 3 Sekunden für jede Iteration der Schleife einzuführen:

alert('hi');

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

Dieser Ansatz konnte jedoch nicht das beabsichtigte Ergebnis erzielen, da die Funktion setTimeout() nicht blockierend ist. Infolgedessen wurde die Schleife schnell ausgeführt und löste in schneller Folge mehrere 3-Sekunden-Timeout-Trigger aus. Dies führte dazu, dass das erste Alarm-Popup („Hallo“) nach 3 Sekunden erschien, gefolgt von einem konstanten Strom von Alarm-Popups („Hallo“) ohne Verzögerung.

Behebung des Verzögerungsproblems

Um dieses Problem anzugehen, wird empfohlen, den folgenden Ansatz zu verwenden:

var i = 1;                  // Set counter to 1

function myLoop() {         // Create loop function
  setTimeout(function() {   // Call 3s setTimeout when loop is called
    console.log('hello');   // Your code here
    i++;                    // Increment counter
    if (i < 10) {           // If counter < 10, call loop function
      myLoop();             // .. again, triggering another 
    }                       // .. setTimeout()
  }, 3000)
}

myLoop();                   // Start the loop
Nach dem Login kopieren

Dieser überarbeitete Ansatz verwendet eine rekursive Funktion, myLoop(), die initiiert bei jedem Aufruf der Funktion ein 3-sekündiges setTimeout(). Durch Erhöhen des Zählers i innerhalb des setTimeout()-Callbacks kann die Funktion die Schleifeniteration nach der Verzögerung fortsetzen. Dadurch wird sichergestellt, dass nachfolgende Iterationen der Schleife die angegebene Zeit warten, bevor sie ausgeführt werden.

Das obige ist der detaillierte Inhalt vonWie implementiert man eine Verzögerung in einer JavaScript-Schleife richtig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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