Heim > Web-Frontend > js-Tutorial > Asynchrone Funktionen in JavaScript: Implizites Versprechen oder expliziter Rückgabewert?

Asynchrone Funktionen in JavaScript: Implizites Versprechen oder expliziter Rückgabewert?

Susan Sarandon
Freigeben: 2024-12-17 18:36:12
Original
698 Leute haben es durchsucht

Async Functions in JavaScript: Implicit Promise or Explicit Return Value?

Asynchrone Funktionen: Implizite Versprechensrückgabe oder explizite Kontrolle?

Asynchrone Funktionen in JavaScript, die durch das Schlüsselwort async gekennzeichnet sind, werden oft implizit genannt Rückgabeversprechen. Eine genauere Betrachtung zeigt jedoch, dass die Realität differenzierter ist.

Standardmäßig gibt eine asynchrone Funktion tatsächlich ein Versprechen zurück, wenn ein Versprechen nicht explizit zurückgegeben wird. Das bedeutet, dass der folgende Code:

async function getVal() {
  const result = await doSomethingAsync();
  return result;
}
Nach dem Login kopieren

äquivalent ist zu:

async function getVal() {
  const result = await doSomethingAsync();
  return Promise.resolve(result);
}
Nach dem Login kopieren

Wenn Sie jedoch explizit einen nicht versprochenen Wert zurückgeben, wird die Funktion ihn automatisch in ein Versprechen einschließen . Zum Beispiel im folgenden Beispiel:

async function getVal() {
  return doSomethingNonAsync();
}
Nach dem Login kopieren

getVal gibt tatsächlich ein Promise-Objekt zurück, das das Ergebnis von doSomethingNonAsync() enthält.

Es ist erwähnenswert, dass sich dieses Verhalten von herkömmlichen JavaScript-Funktionen unterscheidet. Wenn Sie explizit einen primitiven Wert von einer regulären Funktion zurückgeben, wird dieser sofort zurückgegeben. Asynchrone Funktionen geben jedoch immer ein Versprechen zurück und verpacken nicht versprochene Werte nach Bedarf.

Dies mag inkonsistent erscheinen, passt aber zum Konzept der Generatoren in ES6. Generatoren sind Funktionen, die nicht denselben Wert wie ihre Return-Anweisung zurückgeben. Stattdessen liefern sie eine Reihe von Werten, die mit dem Yield-Operator iteriert werden können.

Zum Beispiel:

function* getVal() {
  yield doSomethingAsync();
  return 'finished';
}

// Logs an object.
console.log(getVal());

// Logs 'yikes' and then 'finished'.
for (const val of getVal()) {
  console.log(val);
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonAsynchrone Funktionen in JavaScript: Implizites Versprechen oder expliziter Rückgabewert?. 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