Rumah >hujung hadapan web >Soal Jawab bahagian hadapan >Adakah terdapat pemasa dalam node.js?
Terdapat pemasa dalam "node.js"; modul pemasa dalam "node.js" mengandungi fungsi yang melaksanakan kod untuk tempoh masa tertentu tidak perlu diperkenalkan melalui memerlukan (), kerana semua Kaedah semuanya mensimulasikan fungsi JavaScript dalam penyemak imbas dan adalah global fungsi pemasa dalam "node.js" melaksanakan API serupa dengan API pemasa yang disediakan oleh penyemak imbas web.
Persekitaran pengendalian artikel ini: sistem Windows 10, nodejs versi 12.19.0, komputer Dell G3.
Pemasa dalam Node.js
Modul pemasa dalam Node.js mengandungi fungsi yang melaksanakan kod pada selang waktu tertentu. Pemasa tidak perlu diperkenalkan melalui require(), kerana semua kaedah ini mensimulasikan fungsi JavaScript dalam penyemak imbas dan bersifat global. Untuk mendapatkan pemahaman keseluruhan yang lebih baik tentang bila fungsi ini akan dilaksanakan, adalah idea yang baik untuk membaca Tinjauan Acara dalam Node.js.
Kawal kesinambungan masa dengan Node.js
Fungsi API dalam Node.js menyediakan beberapa cara untuk membenarkan kod mula dilaksanakan pada saat tertentu selepas masa semasa. Fungsi yang diberikan di bawah kelihatan serupa kerana ia tersedia dalam kebanyakan penyemak imbas. Tetapi Node.js sebenarnya menyediakan pelaksanaannya sendiri. Pemasa disepadukan dengan sangat ketat ke dalam sistem, dan walaupun API ini adalah salinan fungsi dalam penyemak imbas, ia masih dilaksanakan secara berbeza.
pemasa digunakan untuk menjadualkan fungsi untuk dipanggil pada titik tertentu pada masa hadapan Fungsi pemasa dalam Node.js melaksanakan API serupa dengan API pemasa yang disediakan oleh pelayar web, tetapi menggunakan gelung peristiwa untuk. laksanakannya. Terdapat empat kaedah berkaitan dalam Node.js
setTimeout(callback, delay[, ...args]) setInterval(callback[, ...args]) setImmediate(callback[, ...args]) process.nextTick(callback[, ...args])
Contoh adalah seperti berikut:
setTimeout() boleh digunakan untuk melaksanakan selepas tempoh masa tertentu Tugas kod. Fungsi ini sangat serupa dengan fungsi JavaScript pelayar window.setTimeout(), tetapi anda tidak boleh menghantar rentetan ke dalam pelaksanaan.
setTimeout() menerima fungsi boleh laku sebagai parameter pertamanya dan masa tunda dalam milisaat sebagai parameter kedua. Parameter selebihnya juga boleh dimasukkan sebagai parameter yang dihantar ke fungsi ini. Berikut ialah contoh:
function myFunc(arg) { console.log(`arg was => ${arg}`); } setTimeout(myFunc, 1500, 'funky');
Oleh kerana setTimeout() digunakan, fungsi myFunc() di atas akan dilaksanakan sekitar 1500 milisaat (atau 1.5 saat).
Selang masa yang ditetapkan tidak dapat menjamin bahawa kod akan dilaksanakan pada selang milisaat yang tepat setiap kali Ini kerana kod lain yang menyekat atau memproses pada pengundian acara akan menangguhkan pelaksanaan masa ini. Satu-satunya jaminan ialah pemasa tidak akan melaksanakan lebih awal daripada selang waktu yang diisytiharkan.
setTimeout() mengembalikan objek Timeout yang melaluinya pemasa yang ditetapkan boleh dirujuk. Objek yang dikembalikan boleh digunakan untuk membatalkan pemasaan (lihat clearTimeout() di bawah) dan untuk menukar tingkah laku pelaksanaan (lihat unref() di bawah).
"Laksanakan serta-merta selepas" setImmediate()
setImmediate() akan dilaksanakan pada penghujung tinjauan pendapat acara semasa. Kod ini akan dilaksanakan selepas sebarang operasi I/O dalam tinjauan acara semasa dan sebelum sebarang kitaran pemasa seterusnya. Pelaksanaan kod boleh dianggap sebagai "melaksanakan serta-merta selepas", yang bermaksud bahawa sebarang panggilan fungsi setImmediate() serta-merta akan dilaksanakan sebelum parameter fungsi setImmediate().
Parameter pertama setImmediate() ialah fungsi yang akan dilaksanakan apabila dilaksanakan, parameter seterusnya akan dihantar ke dalam fungsi ini sebagai parameter. Berikut ialah contoh:
console.log('before immediate'); setImmediate((arg) => { console.log(`executing immediate: ${arg}`); }, 'so immediate'); console.log('after immediate');
Fungsi di atas yang dihantar ke setImmediate() akan dilaksanakan selepas sebarang kod boleh laku telah dilaksanakan, jadi outputnya ialah:
before immediate after immediate executing immediate: so immediate
setImmediate( ) mengembalikan objek Segera, yang boleh digunakan untuk membatalkan tugas berjadual yang dijadualkan (lihat clearImmediate() di bawah).
Nota: Jangan mengelirukan setImmediate() dengan process.nextTick(). Mereka mempunyai beberapa perbezaan utama: Pertama, process.nextTick() akan dilaksanakan sebelum sebarang set Segera dan sebelum sebarang I/O yang dijadualkan. Kedua, process.nextTick() tidak boleh dipadamkan, dengan kata lain, setelah kod dilaksanakan menggunakan process.nextTick(), pelaksanaannya tidak boleh diganggu seperti fungsi biasa ketahui lebih lanjut mengenainya. Fahami operasi process.nextTick().
Perlaksanaan "Forever polling" ~ setInterval()
Jika terdapat fungsi yang perlu dilaksanakan beberapa kali, setInterval() boleh berguna. setInterval() menerima fungsi sebagai parameternya, yang akan dijalankan dalam masa yang tidak terhingga Parameter kedua ialah kelewatan yang diberikan dalam milisaat. Sama seperti setTimeout(), parameter yang selebihnya boleh ditambah selepas ini dan digunakan sebagai argumen yang dihantar ke panggilan fungsi. Satu lagi perkara yang serupa dengan setTimeout() ialah kelewatan tidak dijamin tepat, kerana sesetengah operasi mungkin tergantung pada pengundian acara, jadi ia boleh dianggap sebagai anggaran kelewatan. Seperti dalam contoh berikut:
function intervalFunc() { console.log('Cant stop me now!'); } setInterval(intervalFunc, 1500);
Dalam contoh di atas, intervalFunc() dilaksanakan setiap 1500 milisaat (atau setiap 1.5 saat) sehingga ia ditamatkan.
Seperti setTimeout(), setInterval() juga mengembalikan objek Timeout, yang boleh dirujuk dan menukar pemasa yang ditetapkan.
Pembelajaran yang disyorkan: "tutorial video nodejs"
Atas ialah kandungan terperinci Adakah terdapat pemasa dalam node.js?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!