Bei async/await wird davon ausgegangen, dass asynchrone Funktionen Versprechen zurückgeben. Wenn jedoch eine asynchrone Funktion auf der obersten Ebene ohne explizite Promise-Verarbeitung verwendet wird, entstehen Komplexitäten.
Das Problem hierbei ist, dass die Hauptfunktion ein Promise zurückgibt , wodurch die Anweisung console.log('outside: ' text) ohne einen sofort auszugebenden Wert gestrandet bleibt. Die async/await-Syntax bewirkt, dass die „Inside“-Nachricht nach der „Outside“-Nachricht protokolliert wird, da sie darauf wartet, dass das von main() zurückgegebene Promise erfüllt wird, bevor fortgefahren wird.
Um den zurückgegebenen Wert ohne explizite then()-Behandlung zu verwenden, haben Sie drei Möglichkeiten:
1. Top-Level-Warten in Modulen
(Verfügbar in modernen Umgebungen mit ES2022-Unterstützung)
const text = await main(); console.log(text);
2. Asynchrone Funktion der obersten Ebene, die niemals ablehnt
(async () => { try { const text = await main(); console.log(text); } catch (e) { // Handle Promise rejection or async exceptions here } })();
3. dann und fangen
main() .then(text => { console.log(text); }) .catch(err => { // Handle Promise rejection or async exceptions here });
Das obige ist der detaillierte Inhalt vonWarum erscheint „console.log', bevor die Async-Funktion zu „async'-Code der obersten Ebene führt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!