Heim > Web-Frontend > js-Tutorial > Geben asynchrone Funktionen immer Versprechen zurück?

Geben asynchrone Funktionen immer Versprechen zurück?

Mary-Kate Olsen
Freigeben: 2024-12-25 02:09:12
Original
853 Leute haben es durchsucht

Do Async Functions Always Return Promises?

Frage: Geben asynchrone Funktionen implizit Versprechen zurück?

In JavaScript werden asynchrone Funktionen mit dem Schlüsselwort async deklariert und werden häufig automatisch ausgeführt Rückgabeversprechen. Dies führt jedoch zu einer potenziellen Inkonsistenz: Wenn ein Wert, der kein Versprechen ist, explizit zurückgegeben wird, scheint die Funktion den Wert in ein Versprechen zu verpacken.

Antwort: Alle asynchronen Funktionen geben Versprechen zurück

Das beobachtete Verhalten ist korrekt: Alle asynchronen Funktionen geben implizit Versprechen zurück. Im Einzelnen:

  • Wenn eine asynchrone Funktion ohne explizite Return-Anweisung zurückkehrt, gibt sie ein Versprechen zurück, das in „undefiniert“ aufgelöst ist.
  • Wenn eine asynchrone Funktion explizit einen Nicht-Versprechenswert zurückgibt, wird ein Wrapping durchgeführt Der Wert in einem Versprechen wurde zu diesem Wert aufgelöst.
  • Selbst wenn eine asynchrone Funktion einen Warteausdruck enthält, ist der zurückgegebene Wert immer noch ein Versprechen, das das Ergebnis des Wartens umschließt Ausdruck.
  • Wenn ein Fehler innerhalb einer asynchronen Funktion ausgelöst wird, wird das zurückgegebene Versprechen mit diesem Fehler abgelehnt.

Beispiel:

async function increment(num) {
  return num + 1;
}

// Logs 4, as the returned promise resolves to 4.
increment(3).then(num => console.log(num));
Nach dem Login kopieren

Umbruchverhalten:

Dieses Umbruchverhalten gilt nur für Generatorfunktionen. Generatorfunktionen geben beispielsweise auch Versprechen zurück, allerdings auf andere Weise:

function* foo() {
  return 'test';
}

// Logs an object, not "test".
console.log(foo());

// Logs 'test' by explicitly calling .next() on the generator function.
console.log(foo().next().value);
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonGeben asynchrone Funktionen immer Versprechen 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