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!