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.
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.
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);
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 } })();
3. kemudian dan tangkap
main() .then(text => { console.log(text); }) .catch(err => { // Handle Promise rejection or async exceptions here });
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!