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 });
In modernen Umgebungen wird das Warten auf oberster Ebene innerhalb von Modulen unterstützt:
const time = await latestTime();
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); }); }
In diesem Callback Version:
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!