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

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

Mary-Kate Olsen
Freigeben: 2024-12-30 19:13:09
Original
919 Leute haben es durchsucht

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

Wie man mit asynchronen Rückruffunktionsrückgaben in JavaScript umgeht

Asynchrone Rückruffunktionen stellen eine Herausforderung dar, wenn Werte aus synchronen Methoden abgerufen werden. Betrachten Sie den folgenden Codeausschnitt, der versucht, einen Standortwert aus einer Rückruffunktion abzurufen:

function foo(address) {
  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 Wert direkt zurückzugeben, führt jedoch zu „undefiniert“. Nachfolgende Versuche mit Zwischenvariablen oder Callback-Übergabe sind ebenfalls fehlgeschlagen.

Die Lösung: Callback-Übergabe

Die Rückgabe von Werten aus asynchronen Callback-Funktionen in synchronen Methoden ist nicht möglich. Stattdessen muss ein Rückruf an die asynchrone Funktion übergeben werden, um den Rückgabewert zu erhalten.

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

In diesem überarbeiteten Code akzeptiert die foo-Funktion einen Rückruf fn, um den Rückgabewert zu verarbeiten. Die asynchrone Funktion geocoder.geocode übergibt dann den Standortwert als Argument an fn. Die Rückruffunktion kann dann den Standortwert nach Bedarf verwenden.

Überlegungen zur asynchronen Programmierung

Bedenken Sie, dass bei einem asynchronen inneren Funktionsaufruf auch alle umschließenden Funktionen asynchron sein müssen eine Antwort zurückgeben. Wenn Sie mit zahlreichen Rückrufen arbeiten, sollten Sie die Verwendung einer Promise-Bibliothek wie Q in Betracht ziehen, um den Prozess zu vereinfachen.

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