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

Warum geben asynchrone Funktionen in JavaScript immer Versprechen zurück?

Mary-Kate Olsen
Freigeben: 2024-12-14 01:13:09
Original
126 Leute haben es durchsucht

Why Do Async Functions Always Return Promises in JavaScript?

Asynchrone Funktion gibt Versprechen statt Wert zurück

Bei der asynchronen/await-Programmierung gibt eine asynchrone Funktion immer ein Versprechen zurück. Dieses Versprechen stellt den endgültigen Abschluss der asynchronen Arbeit der Funktion dar.

Wenn Sie eine asynchrone Funktion in einem anderen asynchronen Kontext aufrufen, können Sie „await“ verwenden, um zu pausieren, bis das Versprechen erfüllt ist. In einem nicht asynchronen Kontext (häufig auf der obersten Ebene oder im Event-Handler) müssen Sie jedoch das Versprechen direkt verwenden:

latestTime()
.then(time => {
  console.log(time);
})
.catch(error => {
  // Handle/report error
});
Nach dem Login kopieren

In modernen Umgebungen wird das Warten auf oberster Ebene innerhalb von Modulen unterstützt:

const time = await latestTime();
Nach dem Login kopieren

Um es besser zu verstehen, untersuchen wir eine explizite Promise-Callback-Version Ihrer asynchronen Funktion:

function latestTime() {
  return new Promise((resolve, reject) => {
    web3.eth.getBlock('latest')
      .then(bl => {
        console.log(bl.timestamp);
        console.log(typeof bl.timestamp.then == 'function');
        resolve(bl.timestamp);
      })
      .catch(reject);
  });
}
Nach dem Login kopieren

In diesem Callback Version:

  • Die Promise-Executor-Funktion (an neues Promise übergeben) wird synchron ausgeführt und startet den web3.eth.getBlock-Vorgang.
  • Alle Fehler innerhalb des Promise-Executors oder der Rückrufe werden abgefangen und umgewandelt, um Ablehnungen zu versprechen.

Das obige ist der detaillierte Inhalt vonWarum geben 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