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:
Beispiel mit Non-Promise-Wert:
async function increment(num) { return num + 1; } increment(3).then(num => console.log(num)); // Logs: 4
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
Ausnahmefälle:
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!