Heim >Web-Frontend >js-Tutorial >Warum geben asynchrone Funktionen ausstehende Versprechen statt unmittelbarer Werte zurück?

Warum geben asynchrone Funktionen ausstehende Versprechen statt unmittelbarer Werte zurück?

DDD
DDDOriginal
2024-12-13 19:20:11284Durchsuche

Why Do Asynchronous Functions Return Pending Promises Instead of Immediate Values?

Warum gibt eine asynchrone Funktion Promise mit dem Status „Ausstehend“ anstelle eines Werts zurück?

Der Code definiert eine asynchrone Funktion, AuthUser, die aufruft google.login() und gibt das Versprechen zurück, das es liefert. Wenn die Funktion aufgerufen wird, wird das Versprechen mit dem Status „Ausstehend“ protokolliert, da sein Ergebnis noch nicht aufgelöst wurde.

Lösung:

Um auf den gelösten Wert des Versprechens zuzugreifen, klicken Sie auf it muss mit .then() verkettet werden, auch wenn es noch aussteht. Zum Beispiel:

AuthUser(data)
  .then((token) => {
    console.log(token); // "Some User token"
  });

Details:

Versprechen sind einseitige Operationen. Sobald sie aufgelöst sind, wird ihr Wert unabhängig von ihrem Status (aufgelöst oder ausstehend) an die Methode .then() oder .catch() übergeben. Der Rückgabewert von .then() ist der aufgelöste Wert des Versprechens.

Im bereitgestellten Code gibt AuthUser das Versprechen direkt zurück, sodass sein aufgelöster Wert erst verfügbar ist, wenn .then() aufgerufen wird.

Zusätzliche Erkenntnisse:

  • Die Promises/A-Spezifikation besagt, dass, wenn die Der .then()-Handler gibt einen Wert zurück, das Versprechen wird mit diesem Wert aufgelöst. Wenn ein weiteres Versprechen zurückgegeben wird, wird das ursprüngliche Versprechen mit dem aufgelösten Wert des verketteten Versprechens aufgelöst.
  • Verkettete .then()-Handler enthalten immer den aufgelösten Wert des verketteten Versprechens, das im vorhergehenden .then() zurückgegeben wurde.
  • Wenn der .then()-Handler ein Versprechen zurückgibt, wird der aufgelöste Wert dieses verketteten Versprechens an Folgendes übergeben .then().

Das obige ist der detaillierte Inhalt vonWarum geben asynchrone Funktionen ausstehende Versprechen statt unmittelbarer Werte zurück?. 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