


Penjelasan terperinci tentang menggunakan pemasa untuk melaksanakan fungsi secara kerap dalam Node.js_node.js
Jika anda biasa dengan pengaturcaraan JavaScript sisi klien, anda mungkin telah menggunakan fungsi setTimeout dan setInterval, yang membenarkan kelewatan dalam menjalankan fungsi untuk satu tempoh masa. Contohnya, kod berikut, setelah dimuatkan ke dalam halaman web, akan menambahkan "Hello there" pada dokumen halaman selepas 1 saat:
var oneSecond = 1000 * 1; // satu saat = 1000 x 1 ms
setTimeout(function() {
document.write('
Hello.
');}, satuKedua);
Dan setInterval membenarkan fungsi dilaksanakan berulang kali pada selang waktu tertentu. Jika kod berikut disuntik ke dalam halaman Web, ia akan menyebabkan "Hello there" dilampirkan pada dokumen halaman setiap saat:
var oneSecond = 1000 * 1; // satu saat = 1000 x 1 ms
setInterval(function() {
document.write('
Hello.
'); }, satu Saat);
Oleh kerana Web telah lama menjadi platform untuk membina aplikasi, dan bukannya halaman statik yang mudah, keperluan sedemikian semakin muncul. Fungsi penjadualan tugas ini membantu pembangun melaksanakan pengesahan borang berkala, penyegerakan data jauh tertunda atau interaksi UI yang memerlukan respons tertunda. Node juga melaksanakan sepenuhnya kaedah ini. Di bahagian pelayan, anda boleh menggunakannya untuk mengulangi atau menangguhkan banyak tugas, seperti tamat tempoh cache, pembersihan kolam sambungan, tamat sesi, tinjauan pendapat, dsb.
Gunakan fungsi kelewatan setTimeout untuk melaksanakan
setTimeout boleh merumuskan pelan pelaksanaan untuk menjalankan fungsi yang ditentukan sekali pada masa hadapan, seperti:
var timeout_ms = 2000; var tamat masa = setTimeout(fungsi() {
console.log("tamat masa!");
}, tamat masa_ms);
setTimeout mengembalikan pemegang tamat masa, yang merupakan objek dalaman Anda boleh menggunakannya sebagai parameter untuk memanggil clearTimeout untuk membatalkan pemasa.
Gunakan clearTimeout untuk membatalkan rancangan pelaksanaan
Setelah anda memperoleh pemegang tamat masa, anda boleh menggunakan clearTimeout untuk membatalkan rancangan pelaksanaan fungsi, seperti ini:
var tamat masa = setTimeout(fungsi() {
console.log("tamat masa!");
}, tamat masa);
clearTimeout(timeout);
Dalam contoh ini, pemasa tidak akan dicetuskan, begitu juga perkataan "masa tamat!" Anda juga boleh membatalkan pelan pelaksanaan pada bila-bila masa pada masa hadapan, seperti dalam contoh berikut:
var tamat masa = setMasa tamat(fungsi A() {
console.log("tamat masa!");
}, 2000);
setTimeout(fungsi B() {
}, 1000);
Buat dan batalkan rancangan pelaksanaan berulang untuk fungsi
setInterval adalah serupa dengan setTimeout, tetapi ia akan melaksanakan fungsi berulang kali pada selang waktu tertentu. Anda boleh menggunakannya untuk mencetuskan program secara berkala untuk menyelesaikan tugas seperti pembersihan, pengumpulan, pengelogan, pemerolehan data, pengundian, dsb. yang perlu dilakukan berulang kali.Kod berikut akan mengeluarkan "tanda" pada konsol setiap saat:
setInterval(function() {
console.log("tandakan");
}, titik);
setInterval mengembalikan pemegang pelan pelaksanaan, yang boleh digunakan sebagai parameter clearInterval untuk membatalkan rancangan pelaksanaan:
console.log("tandakan");
}, 1000);
> // … clearInterval(selang);
Gunakan process.nextTick untuk menangguhkan pelaksanaan fungsi sehingga pusingan seterusnya bagi gelung acara
Kadangkala pengaturcara JavaScript pihak pelanggan menggunakan setTimeout(panggilan balik,0) untuk melengahkan tugasan untuk tempoh masa yang singkat Parameter kedua ialah 0 milisaat, yang memberitahu masa jalan JavaScript untuk menunggu serta-merta selepas semua acara yang belum selesai diproses. Jalankan fungsi panggil balik ini. Kadangkala teknik ini digunakan untuk melambatkan pelaksanaan operasi yang tidak perlu dilakukan segera. Sebagai contoh, kadangkala anda perlu mula bermain animasi atau melakukan beberapa pengiraan lain selepas acara pengguna diproses.
Dalam Node, sama seperti makna literal "gelung peristiwa", gelung peristiwa berjalan dalam gelung yang memproses baris gilir peristiwa Setiap pusingan proses kerja gelung peristiwa dipanggil tanda.
Anda boleh memanggil fungsi panggil balik sekali setiap kali gelung acara memulakan pusingan seterusnya (tanda seterusnya) pelaksanaan Ini betul-betul prinsip process.nextTick, dan setTimeout dan setTimeout menggunakan baris gilir pelaksanaan dalam masa jalan JavaScript, dan. Tidak menggunakan gelung acara.
Dengan menggunakan process.nextTick(panggilan balik) dan bukannya setTimeout(panggilan balik, 0), fungsi panggil balik anda akan dilaksanakan serta-merta selepas acara dalam baris gilir diproses, yang jauh lebih cepat daripada baris gilir tamat masa JavaScript (dalam masa CPU untuk mengukur ).
Anda boleh menangguhkan fungsi sehingga pusingan seterusnya gelung acara seperti berikut:
process.nextTick(function() {
my_expensive_computation_function();
});
Nota: Objek proses ialah salah satu daripada beberapa objek global dalam Node.
Menyekat gelung acara
Waktu jalan Node dan JavaScript menggunakan gelung acara berbenang tunggal Setiap kali gelung, masa jalan memproses acara seterusnya dalam baris gilir dengan memanggil fungsi panggil balik yang berkaitan. Apabila acara dilaksanakan, gelung acara memperoleh hasil pelaksanaan dan memproses acara seterusnya, dan seterusnya sehingga baris gilir acara kosong. Jika salah satu fungsi panggil balik mengambil masa yang lama untuk dijalankan, gelung acara tidak akan dapat mengendalikan acara lain yang belum selesai pada masa itu, yang boleh menjadikan aplikasi atau perkhidmatan sangat perlahan.
Apabila memproses acara, jika fungsi sensitif memori atau sensitif pemproses digunakan, gelung acara akan menjadi perlahan dan sejumlah besar acara akan terkumpul, yang tidak dapat diproses dalam masa atau menyekat baris gilir.
Lihat contoh berikut menyekat gelung acara:
process.nextTick(fungsi nextTick1() {
var a = 0;
manakala(benar) {
a ;
}
});process.nextTick(fungsi nextTick2() {
console.log("tanda seterusnya");
});
tetapkanMasa(fungsi tamat() {
console.log("masa tamat");
}, 1000);
Apabila menggunakan setTimeout, fungsi panggil balik akan ditambahkan pada baris gilir pelan pelaksanaan, dan dalam contoh ini fungsi tersebut tidak akan ditambahkan pada baris gilir. Ini adalah contoh yang melampau, tetapi anda dapat melihat bahawa menjalankan tugas intensif pemproses boleh menyekat atau memperlahankan gelung acara.
Keluar dari gelung acara
Menggunakan process.nextTick, anda boleh menangguhkan pelaksanaan tugas tidak kritikal ke tanda seterusnya bagi gelung acara, yang melepaskan gelung acara supaya ia boleh terus melaksanakan acara lain yang belum selesai.Lihat contoh di bawah Jika anda bercadang untuk memadamkan fail sementara, tetapi tidak mahu fungsi panggil balik peristiwa data menunggu operasi IO ini, anda boleh menangguhkannya seperti ini:
stream.end("respons saya");
process.nextTick(function() {
fs.unlink("/path/to/file");
});
});
Andaikan anda bercadang untuk mereka bentuk fungsi yang dipanggil my_async_function, yang boleh melaksanakan operasi I/O tertentu (seperti menghurai fail log), dan berhasrat untuk membiarkannya dilaksanakan secara berkala Anda boleh menggunakan setInterval untuk melaksanakannya seperti ini:
selang var = 1000;
setInterval(function() {
my_async_function(function() {
console.log('fungsi_async_saya selesai!');
});
}, selang);//Nota Penterjemah: “,selang” sebelumnya telah saya tambahkan, pengarang mungkin telah meninggalkannya kerana ralat tipografi
Nota Penterjemah: (Bahagian tebal di bawah ditambah oleh penterjemah dan bukan kandungan buku asal)
Untuk memudahkan pemahaman bahagian kandungan ini, anda boleh mengubah suai kod pengarang supaya ia sebenarnya boleh dijalankan:
setInterval(function(){
(fungsi my_async_function(){
setTimeout(function(){
console.log("1");
},5000);
}, selang);
Jalankan kod ini dan lihat Anda akan mendapati bahawa selepas menunggu selama 5 saat, "hello" dikeluarkan setiap 1 saat. Jangkaan kami ialah selepas my_async_function semasa dilaksanakan (ia mengambil masa 5 saat), tunggu selama 1 saat sebelum melaksanakan my_async_function yang seterusnya harus ada selang 6 saat antara setiap output. Keputusan ini disebabkan oleh fakta bahawa my_async_function tidak dilaksanakan secara bersiri, tetapi berbilang yang dijalankan pada masa yang sama.

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Dalam iOS 17, anda boleh menetapkan berbilang pemasa pada iPhone anda menggunakan apl Jam atau menggunakan Siri untuk menetapkannya bebas tangan. Kami membincangkan kedua-duanya dalam artikel ini. Mari kita lihat mereka. Tetapkan Berbilang Pemasa pada iPhone Menggunakan Apl Jam Buka apl Jam pada iPhone anda dan ketik tab Pemasa di penjuru kanan sebelah bawah. Sekarang, tetapkan jam, minit dan saat. Anda boleh menggunakan pilihan "Label" dan "Bilakah pemasa tamat" untuk menetapkan nama pemasa dan nada pilihan apabila pemasa selesai. Ini akan membantu anda membezakan antara pemasa. Setelah selesai, klik butang "Mula". Kemudian, klik pada ikon "+" di penjuru kanan sebelah atas. Sekarang, ulangi langkah di atas untuk menetapkan berbilang pemasa pada iPhone. Anda juga boleh menyemak imbas

Perkhidmatan Node yang dibina berdasarkan bukan sekatan dan dipacu peristiwa mempunyai kelebihan penggunaan memori yang rendah dan sangat sesuai untuk mengendalikan permintaan rangkaian besar-besaran. Di bawah premis permintaan besar-besaran, isu yang berkaitan dengan "kawalan memori" perlu dipertimbangkan. 1. Mekanisme kutipan sampah V8 dan had ingatan Js dikawal oleh mesin kutipan sampah

Apakah pemasa berbilang pada iOS17? Dalam iOS17, Apple kini menawarkan pengguna keupayaan untuk menetapkan berbilang pemasa sekaligus pada iPhone mereka. Ini adalah satu perubahan yang dialu-alukan, yang ditunggu-tunggu ramai selama bertahun-tahun. Apl Jam, yang sebelum iOS 16 hanya membenarkan pengguna menetapkan satu pemasa pada satu masa, kini boleh digunakan untuk mengaktifkan sebarang bilangan pemasa, menjadikannya sesuai untuk menyelesaikan berbilang tugas sekaligus. Anda boleh menetapkan sebarang bilangan pemasa dalam skrin pemasa. Setelah pemasa dimulakan, semua pemasa aktif akan muncul sebagai pemberitahuan "Aktiviti Langsung" pada skrin kunci dan Pusat Pemberitahuan. Dari sini, anda boleh melihat baki masa sehingga pemasa dimatikan, jeda atau hentikan pemasa tanpa membuka apl Jam. apabila anda berada pada jam

Artikel ini akan memberi anda pemahaman yang mendalam tentang memori dan pengumpul sampah (GC) enjin NodeJS V8 saya harap ia akan membantu anda!

Di manakah pemasa dalam windows 7? Sesetengah pelanggan ingin tahu di mana kiraan detik dalam win7 apabila menggunakan win7 sebenarnya, win7 tidak mempunyai pemasa sendiri, tetapi ada jam yang boleh merekodkan masa ke lokasi pemasa dalam tingkap 7. Mula-mula, mengikut personaliti Bukanya, kemudian cari pilihan dalam bar tugas dan bar menu, kemudian sesuaikan dengan Acura, cari jam, dan pilih Buka, supaya anda boleh meneruskan ke teknologi melalui jam. Sangat mudah dan cepat. Di manakah pemasa dalam Windows 7? Apabila skrin komputer kosong, klik kanan dan pilih "Peribadikan". Pilih pilihan "Bar Tugas dan Bar Menu" Selepas membukanya, dalam tab bar tugas, terdapat kawasan bar status Klik butang tersuai dan klik "Buka" di bawah.

Node 19 telah dikeluarkan secara rasmi Artikel ini akan memberi anda penjelasan terperinci tentang 6 ciri utama Node.js 19. Saya harap ia akan membantu anda!

Modul fail ialah enkapsulasi operasi fail asas, seperti membaca/menulis/membuka/menutup/memadam fail, dsb. Ciri terbesar modul fail ialah semua kaedah menyediakan dua versi **segerak** dan ** asynchronous**, dengan Kaedah dengan akhiran penyegerakan adalah semua kaedah penyegerakan, dan kaedah yang tidak semuanya adalah kaedah heterogen.

Memilih imej Docker untuk Node mungkin kelihatan seperti perkara remeh, tetapi saiz dan potensi kelemahan imej itu boleh memberi kesan yang ketara pada proses dan keselamatan CI/CD anda. Jadi bagaimana kita memilih imej Node.js Docker yang terbaik?
