JavaScript, sebagai bahasa satu utas, hanya boleh memproses satu tugasan pada satu masa. Ini boleh mengakibatkan masa menunggu yang lama untuk tugasan yang rumit, kerana skrip akan disekat daripada melaksanakan sebarang tugas lain sehingga ia telah selesai. Untuk menangani perkara ini, JavaScript menawarkan pengaturcaraan tak segerak, yang membolehkan skrip terus melaksanakan tugas lain sementara ia menunggu tugas tak segerak selesai. Dalam blog ini, kami akan meneroka asas pengaturcaraan tak segerak dalam JavaScript dan cara ia boleh dicapai melalui penggunaan fungsi panggil balik, janji dan async/menunggu.
Fungsi panggil balik ialah fungsi yang dihantar sebagai hujah kepada fungsi lain dan dilaksanakan selepas fungsi utama selesai. Panggilan balik digunakan dalam pengaturcaraan tak segerak untuk menunggu tugasan selesai sebelum melaksanakan langkah seterusnya.
Sebagai contoh, pertimbangkan kod berikut:
function slowTask(callback) { setTimeout(() => { console.log("Slow task completed."); callback(); }, 1000); } function runProgram() { console.log("Program started."); slowTask(() => { console.log("Callback function executed."); }); console.log("Program ended."); } runProgram();
Dalam contoh ini, fungsi slowTask mengambil panggilan balik sebagai hujah. Fungsi slowTask menggunakan setTimeout untuk menangguhkan pelaksanaan tugas selama satu saat. Fungsi runProgram memanggil slowTask dan menghantar fungsi panggil balik sebagai hujah. Fungsi runProgram juga mencatatkan "Program dimulakan" dan "Program berakhir". Apabila fungsi slowTask telah selesai, ia mencatatkan "Tugas lambat selesai" dan melaksanakan fungsi panggil balik, yang mencatatkan "Fungsi panggil balik dilaksanakan".
Outputnya ialah:
Program started. Program ended. Slow task completed. Callback function executed.
Janji ialah pendekatan yang lebih moden untuk pengaturcaraan tak segerak dalam JavaScript. Janji mewakili hasil daripada operasi tak segerak dan boleh berada dalam salah satu daripada tiga keadaan: belum selesai, dipenuhi atau ditolak. Janji boleh dibuat menggunakan pembina Promise, dan keadaannya boleh ditentukan menggunakan kaedah then and catch.
Contohnya:
const slowTask = new Promise((resolve, reject) => { setTimeout(() => { resolve("Slow task completed."); }, 1000); }); function runProgram() { console.log("Program started."); slowTask .then((result) => { console.log(result); }) .catch((error) => { console.error(error); }); console.log("Program ended."); } runProgram();
Dalam contoh ini, slowTask ialah janji yang diselesaikan selepas satu saat dengan hasil "Tugas lambat selesai.". Fungsi runProgram memanggil slowTask dan menggunakan kaedah kemudian untuk log hasil apabila janji dipenuhi.
The output will be: Program started. Program ended. Slow task completed.
Async/wait ialah cara terkini dan paling mudah dibaca untuk mengendalikan operasi tak segerak dalam JavaScript. Ia membolehkan pembangun menulis kod tak segerak yang kelihatan seperti kod segerak, menjadikannya lebih mudah untuk difahami dan diselenggara. Kata kunci async digunakan untuk mengisytiharkan fungsi tak segerak dan kata kunci await digunakan untuk menunggu janji diselesaikan.
Berikut ialah contoh untuk menunjukkan penggunaan async/menunggu dalam JavaScript:
async function fetchData() { const response = await fetch("https://api.example.com/data"); const data = await response.json(); console.log(data); } fetchData();
Dalam contoh ini, fungsi fetchData diisytiharkan sebagai tak segerak menggunakan kata kunci async. Fungsi ini menggunakan pengambilan untuk mendapatkan semula data daripada API, dan menunggu digunakan untuk menunggu operasi pengambilan selesai. Respons yang diselesaikan kemudiannya diubah menjadi objek JSON menggunakan response.json(). Kata kunci await digunakan untuk menunggu transformasi JSON selesai dan hasil akhir dilog ke konsol.
Adalah penting untuk ambil perhatian bahawa kod dalam fungsi tak segerak akan dilaksanakan secara tak segerak, tetapi kod di luar fungsi itu masih akan dilaksanakan secara serentak. Selain itu, kata kunci tunggu hanya boleh digunakan dalam fungsi tak segerak.
Kesimpulannya, pengaturcaraan tak segerak dalam JavaScript membenarkan skrip untuk terus melaksanakan tugas lain sementara ia menunggu tugas tak segerak selesai. Fungsi panggil balik, janji dan async/menunggu ialah tiga cara untuk mencapai pengaturcaraan tak segerak dalam JavaScript. Fungsi panggil balik ialah cara paling mudah dan paling asas untuk mengendalikan operasi tak segerak, manakala janji menawarkan pendekatan yang lebih moden dan fleksibel. Async/wait menyediakan cara yang paling mudah dibaca untuk mengendalikan operasi tak segerak dan merupakan kaedah yang disyorkan untuk pengaturcaraan JavaScript moden. Memahami pengaturcaraan tak segerak dalam JavaScript adalah penting untuk mencipta aplikasi yang cekap dan responsif, dan merupakan kemahiran yang mesti ada untuk mana-mana pembangun JavaScript.
Atas ialah kandungan terperinci Pengaturcaraan tak segerak dalam Javascript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!