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

Geben asynchrone JavaScript-Funktionen immer Versprechen zurück?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-23 16:20:12343Durchsuche

Do Async JavaScript Functions Always Return Promises?

Asynchrone Funktionen und implizite Versprechensrückgaben

In JavaScript geben asynchrone Funktionen, die durch das Schlüsselwort async gekennzeichnet sind, implizit Versprechen zurück. Dies gilt auch dann, wenn Sie explizit Nicht-Promise-Werte oder gar nichts zurückgeben.

Implicit Promise Wrapper

Wenn Sie a nicht explizit zurückgeben Versprechen, der von Ihnen zurückgegebene Wert wird automatisch in ein Versprechen verpackt.

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

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

Das bedeutet, dass der Rückgabewert auch dann in eine Zahl umgewandelt wird, wenn er eine Zahl ist ein Versprechen für die Zwecke der asynchronen Verarbeitung.

Unwrapped Promises

Promises werden automatisch entpackt, d. h., wenn Sie ein Versprechen für einen Wert aus einer asynchronen Funktion zurückgeben , erhalten Sie ein Versprechen für den Wert (kein Versprechen für ein Versprechen für den). Wert).

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

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

Inkonsistentes Verhalten

Das Verhalten von asynchronen Funktionen kann tatsächlich inkonsistent mit herkömmlichen Rückgabeanweisungen erscheinen, da es sich unterscheidet, wenn explizit nicht versprochene Werte zurückgegeben werden . Dies liegt daran, dass asynchrone Funktionen einen speziellen Funktionstyp namens Generatoren verwenden, der nicht immer denselben Wert wie die Return-Anweisung zurückgibt.

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