Heim > Web-Frontend > js-Tutorial > js implementiert asynchrone Schleifenimplementierungscode_javascript-Fähigkeiten

js implementiert asynchrone Schleifenimplementierungscode_javascript-Fähigkeiten

WBOY
Freigeben: 2016-05-16 15:15:27
Original
1358 Leute haben es durchsucht

Frage
Bei der Implementierung einer asynchronen Schleife können Probleme auftreten.

Versuchen wir, eine asynchrone Methode zu schreiben, die den Indexwert der Schleife einmal in einer Schleife ausgibt.

<script>
for(var i = 0; i < 5; i++){
setTimeout(function(){
document.writeln(i);document.writeln("<br />");
},1000);
}
</script>
Nach dem Login kopieren

Die Ausgabe des obigen Programms ist:

5
5
5
5
5

Grund

Jedes Timeout (Timeout) verweist auf das ursprüngliche i, nicht auf seine Kopie. Also erhöht die for-Schleife i auf 5, dann läuft die Zeitüberschreitung und ruft den aktuellen Wert von i auf (der 5 ist).

Lösung

Es gibt verschiedene Möglichkeiten, i zu kopieren. Die gebräuchlichste und am häufigsten verwendete Methode besteht darin, einen Abschluss zu erstellen, indem eine Funktion deklariert und i an diese Funktion übergeben wird. Wir verwenden hier eine selbstaufrufende Funktion.

Führen Sie den Code aus

<script>
for(var i = 0; i < 5; i++){
(function(num){
setTimeout(function(){
document.writeln(num);document.writeln("<br />");
},1000);
})(i);
}
</script>
Nach dem Login kopieren

Ausgabe

0
1
2
3
4

Verwandte Etiketten:
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage