Dalam pengaturcaraan tak segerak, ciri async/wait membolehkan anda bertukar antara tugas segerak dan tak segerak dengan lancar. Walau bagaimanapun, apabila melaksanakan kod tak segerak di peringkat atas, pertimbangan tertentu mesti dibuat.
Apabila anda mentakrifkan fungsi tak segerak, ia mengembalikan Janji. Apabila anda memanggil fungsi ini di peringkat atas, ia segera mengembalikan Janji, bukan nilai yang diselesaikan. Inilah sebabnya mengapa konsol anda mengeluarkan objek Promise sebelum ia melaksanakan tugas tak segerak.
Untuk menyelesaikannya, anda mempunyai beberapa pilihan:
1. Menunggu Peringkat Atas (Cadangan ES2022)
Dalam persekitaran moden, anda boleh menggunakan menunggu peringkat teratas dalam modul. Ini membolehkan anda menunggu Janji terus dalam skop modul.
const text = await main(); console.log(text); // Logs the resolved value
2. Fungsi Async peringkat atas dengan Penolakan Tidak Terkendali
Anda boleh menentukan fungsi async peringkat atas yang tidak pernah menolak. Ini menghalang ralat penolakan yang tidak dikendalikan tetapi tidak mengendalikan ralat secara eksplisit.
(async () => { try { const text = await main(); console.log(text); // Logs the resolved value } catch (e) { // Error handling (optional) } })();
3. then() dan catch()
Jika kedua-dua pilihan di atas tidak sesuai, anda boleh menggunakan kaedah Promise then() dan catch() untuk mengendalikan hasilnya.
main() .then((text) => { console.log(text); // Logs the resolved value }) .catch((err) => { // Error handling });
Nota: Dalam semua kes, adalah penting untuk mengendalikan penolakan dengan betul untuk mengelakkan ralat penolakan yang tidak dikendalikan.
Atas ialah kandungan terperinci Bagaimanakah Saya Melaksanakan Kod Asynchronous dengan Betul di Peringkat Atas dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!