Heim >Web-Frontend >js-Tutorial >Wie rufe ich Werte aus asynchronen Rückruffunktionen in JavaScript ab?
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
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
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 });
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!