Rumah > hujung hadapan web > tutorial js > Mengapa Async/Menunggu Tahap Atas Tidak Berfungsi dalam JavaScript dan Bagaimana Saya Boleh Membetulkannya?

Mengapa Async/Menunggu Tahap Atas Tidak Berfungsi dalam JavaScript dan Bagaimana Saya Boleh Membetulkannya?

DDD
Lepaskan: 2024-12-07 10:05:17
asal
745 orang telah melayarinya

Why Doesn't Top-Level Async/Await Work in JavaScript and How Can I Fix It?

Menggunakan async/menunggu di Peringkat Atas

Soalan:

Mengapa perkara berikut kod tidak bekerja?

async function main() {  
    var value = await Promise.resolve('Hey there');
    console.log('inside: ' + value);
    return value;
}

var text = main();  
console.log('outside: ' + text);
Salin selepas log masuk

Jawapan:

Punca kod tidak berfungsi adalah kerana main mengembalikan janji. Semua fungsi async mengembalikan janji.

Untuk menggunakan async/menunggu di peringkat atas, terdapat tiga pilihan:

1. Menunggu Tahap Atas dalam Modul:

Dalam ES2022, menunggu peringkat teratas boleh digunakan dalam modul. Ini membolehkan anda menggunakan sintaks await di bahagian atas modul. Walau bagaimanapun, modul tidak akan selesai memuatkan sehingga janji yang anda tunggu selesai. Jika janji ditolak, modul akan gagal dimuatkan.

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

2. Fungsi async Peringkat Atas Yang Tidak Pernah Menolak:

Gunakan fungsi async peringkat atas yang tidak pernah menolak (melainkan anda mahu ralat "penolakan tidak dikendalikan"):

(async () => {
    try {
        const text = await main();
        console.log(text);
    } catch (e) {
        // Handle errors
    }
})();
Salin selepas log masuk

3. kemudian dan tangkap:

Gunakan .then() dan .catch() untuk mengendalikan janji yang dikembalikan oleh utama:

main()
    .then(text => {
        console.log(text);
    })
    .catch(err => {
        // Handle errors
    });
Salin selepas log masuk

Perhatikan bahawa ketiga-tiga pilihan memerlukan pengendalian penolakan janji atau pengecualian async, kerana tiada pemanggil untuk menyampaikannya.

Atas ialah kandungan terperinci Mengapa Async/Menunggu Tahap Atas Tidak Berfungsi dalam JavaScript dan Bagaimana Saya Boleh Membetulkannya?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan