Heim >Web-Frontend >js-Tutorial >Geben asynchrone JavaScript-Funktionen immer Versprechen zurück?
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!