Rumah > hujung hadapan web > tutorial js > Mengapakah `console.log` Muncul Sebelum Hasil Fungsi Async dalam Kod `async` Peringkat Atas?

Mengapakah `console.log` Muncul Sebelum Hasil Fungsi Async dalam Kod `async` Peringkat Atas?

Susan Sarandon
Lepaskan: 2024-12-17 18:45:18
asal
724 orang telah melayarinya

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

Mengapa Perlaksanaan Asynchronous Berlaku Selepas Mesej Log dalam Fungsi Async Peringkat Atas?

Dalam async/wait, diandaikan bahawa fungsi async akan mengembalikan janji. Walau bagaimanapun, apabila fungsi async digunakan pada peringkat teratas tanpa pengendalian Promise yang jelas, kerumitan timbul.

Memahami Mengapa Ia Tidak Berfungsi

Isu di sini ialah fungsi utama mengembalikan Promise , meninggalkan pernyataan console.log('outside: ' text) terkandas tanpa nilai untuk dikeluarkan serta-merta. Sintaks async/wait menyebabkan mesej 'dalam' dilog selepas mesej 'luar' kerana ia menunggu Janji yang dikembalikan oleh main() untuk diselesaikan sebelum meneruskan.

Menyelesaikan Masalah

Untuk menggunakan nilai yang dikembalikan tanpa pengendalian then() yang eksplisit, anda mempunyai tiga pilihan:

1. Menunggu Tahap Atas dalam Modul

(Tersedia dalam persekitaran moden dengan sokongan ES2022)

const text = await main();
console.log(text);
Salin selepas log masuk

2. Fungsi Async Peringkat Atas Yang Tidak Pernah Menolak

(async () => {
try {
const text = await main();
console.log(text);
} catch (e) {
// Handle Promise rejection or async exceptions here
}
})();
Salin selepas log masuk

3. kemudian dan tangkap

main()
.then(text => {
console.log(text);
})
.catch(err => {
// Handle Promise rejection or async exceptions here
});
Salin selepas log masuk

Atas ialah kandungan terperinci Mengapakah `console.log` Muncul Sebelum Hasil Fungsi Async dalam Kod `async` Peringkat Atas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan