Apabila menulis aplikasi JavaScript, anda mungkin mahu menambah kelewatan pada kod anda. JavaScript berutas tunggal boleh mengambil banyak masa untuk melaksanakan fungsi segerak, yang boleh menyebabkan aplikasi anda menjadi kurang responsif. Untuk menyelesaikan masalah ini, kita boleh menggunakan kaedah tak segerak untuk mencapai kesan "tidur", yang menyebabkan program menjeda pelaksanaan dalam masa yang ditetapkan. Artikel ini akan memperkenalkan cara melaksanakan fungsi tidur menggunakan Node.js.
Node.js menyediakan fungsi setTimeout terbina dalam, yang digunakan untuk melaksanakan fungsi panggil balik selepas masa yang ditentukan. Fungsi setTimeout menerima dua parameter: fungsi dan masa dalam milisaat. Berikut ialah contoh penggunaan fungsi setTimeout:
setTimeout(function(){ console.log('This message will be printed after 5 seconds'); }, 5000);
Dalam kod di atas, fungsi setTimeout akan melaksanakan fungsi dan mencetak mesej selepas 5 saat. Walau bagaimanapun, kami tidak mencapai kesan "tidur" kerana kami tidak boleh menyekat utas semasa sehingga fungsi panggil balik setTimeout dilaksanakan. Oleh itu, ia tidak sesuai untuk melaksanakan fungsi tidur.
Untuk melaksanakan fungsi tidur, kita perlu menggunakan fungsi tak segerak untuk mensimulasikan kesan tidur dalam JavaScript. Fungsi tak segerak tidak menyekat utas semasa, tetapi melaksanakan fungsi panggil balik dalam tempoh masa tertentu. Oleh itu, kita boleh menggunakan objek Promise untuk melaksanakan fungsi tak segerak Terdapat terutamanya empat langkah:
(1) Tulis fungsi tidur, yang perlu menerima parameter masa.
function sleep(time) { return new Promise((resolve) => setTimeout(resolve, time)); }
Dalam kod di atas, kami menggunakan fungsi setTimeout untuk menunggu masa yang ditentukan.
(2) Buat seketika objek Promise dan kembalikan Promise.
return new Promise((resolve) => setTimeout(resolve, time));
Dalam kod di atas, kami mencipta objek Promise baharu dan menunggu masa yang ditentukan menggunakan fungsi setTimeout. Kemudian kami memanggil fungsi menyelesaikan dalam fungsi panggil balik objek Promise untuk menunjukkan bahawa Promise telah selesai.
(3) Apabila memanggil fungsi tidur, gunakan kaedah kemudian untuk mendapatkan penyelesaian objek Janji.
sleep(2000).then(() => { console.log('This message will be printed after 2 seconds'); });
Dalam kod di atas, kami memanggil fungsi tidur dan menentukan masa untuk menunggu. Kemudian kami menggunakan kaedah Promise untuk mendapatkan hasil yang dihuraikan. Dalam kes ini, ia bermakna mencetak mesej selepas menunggu 2 saat.
(4) Bungkus fungsi tidur dalam fungsi async.
async function sleepAsync(time) { await sleep(time); }
Dalam kod di atas, kami merangkum fungsi tidur dalam fungsi async. Fungsi async boleh menjeda pelaksanaan sementara menunggu fungsi menyelesaikan objek Promise dan menyambung semula pelaksanaan selepas objek Promise diselesaikan.
Berikut ialah contoh kod untuk menggunakan fungsi tidur:
async function main() { console.log('This message will be printed immediately'); await sleepAsync(2000); console.log('This message will be printed after 2 seconds'); } main();
Dalam kod di atas, kami mencipta fungsi yang dipanggil fungsi async utama. Di dalam fungsi kami mencetak mesej kali pertama dan kemudian menunggu selama 2 saat dan mencetak mesej lain selepas menunggu. Dalam kes ini, fungsi sleepAsync ditakrifkan dalam konteks fungsi utama, jadi kami menggunakan operator await untuk menunggu fungsi async selesai.
Dalam artikel ini, kami memperkenalkan cara untuk melaksanakan fungsi tidur menggunakan Node.js. Kami menggunakan objek Promise dan fungsi async/wait untuk mensimulasikan kesan tidur dalam JavaScript. Dengan menggunakan fungsi tak segerak, kita boleh menangguhkan pelaksanaan kod tanpa menyekat utas semasa.
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan fungsi tidur dalam nodejs. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!