Heim > Web-Frontend > js-Tutorial > Wie rufe ich Werte aus asynchronen Rückruffunktionen in JavaScript ab?

Wie rufe ich Werte aus asynchronen Rückruffunktionen in JavaScript ab?

Barbara Streisand
Freigeben: 2024-12-26 10:48:11
Original
480 Leute haben es durchsucht

How to Retrieve Values from Asynchronous Callback Functions in JavaScript?

Wert von der asynchronen Rückruffunktion kann nicht abgerufen werden

Dieses häufig auftretende Problem hat zahlreiche Threads zum Stapelüberlauf. Trotz umfangreicher Suche haben einige Entwickler immer noch Schwierigkeiten, auf Werte aus Rückrufen zuzugreifen.

Die größte Herausforderung besteht darin, dass synchrone Methoden keine Werte aus asynchronen Aufrufen zurückgeben können. Wie im bereitgestellten Beispiel dargestellt:

function foo(address){

  // google map stuff
  geocoder.geocode( { 'address': address}, function(results, status) {
      results[0].geometry.location; // I want to return this value
  })

}
foo(); //result should be results[0].geometry.location; value
Nach dem Login kopieren

Der Versuch, den gewünschten Wert direkt zurückzugeben, führt zu einer „undefinierten“ Antwort. Anschließend wurden Änderungen vorgeschlagen, jedoch ohne Erfolg.

Ein Beispiel für einen solchen Versuch:

function foo(address){
  var returnvalue;    
  geocoder.geocode( { 'address': address}, function(results, status) {
      returnvalue = results[0].geometry.location; 
  })
  return returnvalue; 
}
foo(); //still undefined
Nach dem Login kopieren

Lösung

Die Lösung erfordert das Bestehen ein Rückruf an die foo-Funktion, die anschließend die Rückgabe erhält Wert:

function foo(address, fn){
  geocoder.geocode( { 'address': address}, function(results, status) {
     fn(results[0].geometry.location); 
  });
}

foo("address", function(location){
  alert(location); // this is where you get the return value
});
Nach dem Login kopieren

Asynchrone Funktionen und Rückrufstrukturen:

Asynchrone innere Funktionsaufrufe erfordern die Verwendung von ebenso asynchronen Wrapping-Funktionen, um Antworten abzurufen.

Bibliotheken und Alternativen Ansätze:

Die Handhabung zahlreicher Rückrufe kann durch die Verwendung von Versprechensbibliotheken wie Q vereinfacht werden. Diese Frameworks bieten eine praktische Möglichkeit, asynchrone Vorgänge zu verwalten und effizienter und strukturierter auf ihre Ergebnisse zuzugreifen.

Das obige ist der detaillierte Inhalt vonWie rufe ich Werte aus asynchronen Rückruffunktionen in JavaScript ab?. 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