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

Geben asynchrone Funktionen in JavaScript immer Versprechen zurück?

Susan Sarandon
Freigeben: 2024-12-22 09:54:37
Original
788 Leute haben es durchsucht

Do Async Functions in JavaScript Always Return Promises?

Implizite Versprechen in asynchronen Funktionen

In JavaScript sind asynchrone Funktionen Funktionen, die asynchron darauf warten können, dass ein Versprechen abgeschlossen wird und seinen Wert zurückgibt. Ein weit verbreitetes Missverständnis besteht jedoch darin, dass asynchrone Funktionen implizit ein Versprechen für den Wert zurückgeben, den sie zurückgeben.

Den Rückgabewert verstehen

Auch wenn es den Anschein haben kann, dass asynchrone Funktionen implizit zurückgeben ein Versprechen, das ist nicht ganz richtig. Der Rückgabewert einer asynchronen Funktion kann einer von zwei Dingen sein:

  • Ein nicht versprochener Wert: Wenn eine asynchrone Funktion explizit einen nicht versprochenen Wert zurückgibt, verpackt sie diesen Wert automatisch in ein Versprechen.
  • Ein Versprechen: Der Rückgabewert einer asynchronen Funktion, die selbst ein Versprechen ist, bleibt bestehen unverändert.

Beispiel mit Non-Promise-Wert:

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

increment(3).then(num => console.log(num)); // Logs: 4
Nach dem Login kopieren

Hier geben wir eine Zahl aus der asynchronen Funktion zurück. Die Ausgabe wird jedoch über .then() abgerufen, was darauf hinweist, dass es sich um ein Versprechen handelt, das auf den Wert 4 aufgelöst wurde.

Explizite Versprechen:

Wenn wir Wenn wir explizit ein Versprechen von einer asynchronen Funktion zurückgeben, erhalten wir ein Versprechen für diesen Wert, kein Versprechen für a Versprechen.

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

increment(3).then(num => console.log(num)); // Logs: 4
Nach dem Login kopieren

Ausnahmefälle:

  • Leere asynchrone Funktionen: Auch wenn eine asynchrone Funktion keine explizite Return-Anweisung hat, gibt sie dennoch ein Versprechen für zurück undefiniert.
  • Await in Async-Funktionen: Die Verwendung von Wait innerhalb einer asynchronen Funktion hat keinen Einfluss auf den Typ des Rückgabewerts. Es wird immer noch in ein Versprechen verpackt, wenn der zurückgegebene Wert kein Versprechen ist.

Fazit

Asynchrone Funktionen in JavaScript verpacken implizit nicht versprochene Rückgabewerte in einem Versprechen. Wenn der Rückgabewert jedoch bereits ein Versprechen ist, bleibt er unberührt. Dieses Verhalten unterscheidet sich von herkömmlichen Return-Anweisungen, steht jedoch im Einklang mit den zugrunde liegenden Prinzipien der Generatoren in ES6.

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