Heim >Web-Frontend >js-Tutorial >Wie kann ich Werte von asynchronen Rückruffunktionen in JavaScript zurückgeben?

Wie kann ich Werte von asynchronen Rückruffunktionen in JavaScript zurückgeben?

Linda Hamilton
Linda HamiltonOriginal
2024-12-27 01:15:09343Durchsuche

How Can I Return Values from Asynchronous Callback Functions in JavaScript?

Asynchrone Rückrufe: Werte zurückgeben

Die Rückgabe von Werten von asynchronen Rückruffunktionen kann aufgrund ihrer nicht blockierenden Natur eine Herausforderung sein. Hier ist eine Aufschlüsselung des Problems und eine Lösung:

Im bereitgestellten Beispiel:

function foo(address) {
  // Google Maps stuff
  geocoder.geocode({'address': address}, function(results, status) {
    // Unable to return results[0].geometry.location synchronously
  });
}

Im asynchronen Geokodierungsrückruf kann der Wert, den Sie zurückgeben möchten, nicht synchron abgerufen werden. Der Versuch, dies zu tun, führt zu einem undefinierten Wert.

Lösung: Rückruf mit Ergebnis

Um den Wert zu erhalten, können Sie eine Rückruffunktion an foo übergeben, das empfangen wird das Ergebnis:

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

Im Callback für foo kann man dann auf den Standort zugreifen Wert:

foo("address", function(location) {
  alert(location); // Result obtained here
});

Asynchrone Funktionsketten

Wenn ein asynchroner Aufruf in einer anderen Funktion verschachtelt ist, muss diese Funktion auch asynchron sein, damit der Rückgabewert erhalten werden kann . Erwägen Sie bei komplexen Szenarien die Verwendung einer Promise-Bibliothek wie Q, um asynchrone Vorgänge effizient zu verwalten.

Das obige ist der detaillierte Inhalt vonWie kann ich Werte von asynchronen Rückruffunktionen in JavaScript zurückgeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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