Heim > Web-Frontend > js-Tutorial > Warum erscheint „console.log', bevor die Async-Funktion zu „async'-Code der obersten Ebene führt?

Warum erscheint „console.log', bevor die Async-Funktion zu „async'-Code der obersten Ebene führt?

Susan Sarandon
Freigeben: 2024-12-17 18:45:18
Original
646 Leute haben es durchsucht

Why Does `console.log` Appear Before Async Function Results in Top-Level `async` Code?

Warum erfolgt die asynchrone Ausführung nach der Protokollmeldung in der asynchronen Funktion der obersten Ebene?

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.

Verstehen, warum es nicht funktioniert

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.

Lösung des Problems

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);
Nach dem Login kopieren

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
}
})();
Nach dem Login kopieren

3. dann und fangen

main()
.then(text => {
console.log(text);
})
.catch(err => {
// Handle Promise rejection or async exceptions here
});
Nach dem Login kopieren

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!

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