Heim > Web-Frontend > js-Tutorial > Warum gibt meine Async-Funktion „Promise { }' anstelle des erwarteten Werts zurück?

Warum gibt meine Async-Funktion „Promise { }' anstelle des erwarteten Werts zurück?

Linda Hamilton
Freigeben: 2024-12-09 22:03:12
Original
900 Leute haben es durchsucht

Why Does My Async Function Return `Promise {  }` Instead of the Expected Value?

Warum gibt meine asynchrone Funktion das Versprechen zurück { } Anstelle eines Werts?

Problem:

Im bereitgestellten Code:

let AuthUser = data => {
  return google.login(data.username, data.password).then(token => { return token } )
}
Nach dem Login kopieren

Bei der Ausführung von Folgendem:

let userToken = AuthUser(data)
console.log(userToken)
Nach dem Login kopieren

Die Ausgabe ist:

Promise { <pending> }
Nach dem Login kopieren

Erklärung:

Versprechen in JavaScript werden zur Darstellung asynchroner Vorgänge verwendet. Wenn eine asynchrone Funktion ein Versprechen zurückgibt, das noch ungelöst ist, wird sie beim Drucken als „ausstehend“ protokolliert.

Um das Ergebnis eines asynchronen Aufrufs zu erfassen, müssen Sie die .then-Methode für das Versprechen verwenden. Diese Methode verwendet eine Rückruffunktion als Argument, die ausgeführt wird, wenn das Versprechen aufgelöst wird.

Lösung:

Um das Token von der asynchronen Funktion korrekt zu protokollieren, Ändern Sie den Code wie folgt:

let AuthUser = function(data) {
  return google.login(data.username, data.password).then(token => { return token } )
}

let userToken = AuthUser(data)
console.log(userToken) // Promise { <pending> }

userToken.then(function(result) {
   console.log(result) // "Some User token"
})
Nach dem Login kopieren

Durch die Verwendung von .then können Sie das Ergebnis des Versprechens verarbeiten, unabhängig davon, ob es gelöst ist oder noch besteht ausstehend.

Details:

Promises werden nur einmal aufgelöst und der aufgelöste Wert wird an die Methoden .then oder .catch übergeben. Die Promises/A-Spezifikation besagt, dass das Versprechen mit diesem Wert aufgelöst wird, wenn die Funktion im .then-Handler einen Wert zurückgibt. Wenn der Handler ein weiteres Versprechen zurückgibt, wird das ursprüngliche Versprechen mit dem aufgelösten Wert des verketteten Versprechens aufgelöst.

Das obige ist der detaillierte Inhalt vonWarum gibt meine Async-Funktion „Promise { }' anstelle des erwarteten Werts zurück?. 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