Heim > Web-Frontend > js-Tutorial > Hauptteil

Wie gehe ich mit asynchronen Funktionsaufrufen in JavaScript-For-Schleifen um?

DDD
Freigeben: 2024-10-28 03:54:30
Original
191 Leute haben es durchsucht

How to Handle Asynchronous Function Calls within JavaScript For Loops?

Asynchroner Funktionsaufruf innerhalb von For-Schleifen in JavaScript

Die asynchrone Natur von JavaScript kann beim Aufruf asynchroner Funktionen innerhalb von For-Schleifen zu Herausforderungen führen. Betrachten Sie den folgenden Code:

for(var i = 0; i < list.length; i++){
    mc_cli.get(list[i], function(err, response) {
        do_something(i);
    });
}
Nach dem Login kopieren

Das Problem liegt bei der asynchronen Rückruffunktion, die möglicherweise ausgeführt wird, nachdem die for-Schleife abgeschlossen ist. Folglich verweist do_something(i) immer auf die letzte Iteration der Schleife.

Lösungsversuch mit Abschlüssen

Der Entwickler hat versucht, Abschlüsse zu verwenden, um den Wert von i zu erfassen innerhalb jeder Iteration der Schleife:

do_something((function(x){return x})(i))
Nach dem Login kopieren

Dieser Ansatz schlägt jedoch auch fehl, weil die Funktion sofort ausgeführt wird, was zum gleichen Problem führt.

Lösung mit forEach

Eine effizientere Lösung ist die Verwendung der forEach-Methode von JavaScript, die der Callback-Funktion das Array-Element und seinen Index bereitstellt. Da jeder Rückruf seinen eigenen Bereich hat, bleibt der Indexwert erhalten.

list.forEach(function(listItem, index){
  mc_cli.get(listItem, function(err, response) {
    do_something(index);
  });
});
Nach dem Login kopieren

Durch die Verwendung von forEach haben die Rückruffunktionen jetzt Zugriff auf den richtigen Indexwert für jede Iteration, wodurch das Problem des falschen Index gelöst wird in der Funktion do_something referenziert.

Das obige ist der detaillierte Inhalt vonWie gehe ich mit asynchronen Funktionsaufrufen in JavaScript-For-Schleifen um?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!