Node.js, seperti js, juga mempunyai pemasa, pemasa tamat masa, pemasa selang masa, pemasa tepat pada masanya dan fungsi process.nextTick(panggilan balik) untuk melaksanakan penjadualan acara. Hari ini, mari belajar cara menggunakan setTimeout dan setInterval.
1. tetapkan pemasa tamat masa (sama seperti selepas dalam GCD)
Dalam node.js, anda boleh menggunakan kaedah setTimeout(panggilan balik, delayMillSeconds, [args]) terbina dalam node.js. Apabila memanggil setTime(), fungsi panggil balik adalah selepas delayMillSeconds
Melaksanakan .setTime() akan mengembalikan ID objek pemasa, yang boleh dibatalkan dengan menghantar ID kepada clearTimeout(timeoutId) sebelum delayMillSeconds tamat tempoh.
function myfunc(){ console.log("myfunc"); }; var mytimeout=setTimeout(myfunc,1000); clearTimeout(mytimeout);
"C:\Program Files (x86)\JetBrains\WebStorm 11.0.3\bin\runnerw.exe" F:\nodejs\node.exe timer.js Process finished with exit code 0
Jika anda mengulas baris clearTimeout(mytimeout), anda boleh melihat bahawa myfunc() akan dilaksanakan.
"C:\Program Files (x86)\JetBrains\WebStorm 11.0.3\bin\runnerw.exe" F:\nodejs\node.exe timer.js myfunc Process finished with exit code 0
2. setPemasa selang waktu (serupa dengan dispatch_source_t atau NSTimer dalam GCD)
Pemasa selang digunakan untuk melakukan kerja pada selang masa yang tetap Sama seperti setTimeout, node.js mempunyai setInterval terbina dalam(panggilan balik, delayMilliSecond, [args]) untuk mencipta dan mengembalikan ID objek pemasa, dan membatalkannya melalui clearInterval(. ).
/** * Created by Administrator on 2016/3/11. */ function myfunc(Interval){ console.log("myfunc "+Interval); } var myInterval=setInterval(myfunc,1000,"Interval"); function stopInterval(){ clearTimeout(myInterval); //myInterval.unref(); } setTimeout(stopInterval,5000);
Kod di atas adalah untuk mencipta fungsi panggil balik myfunc setInterval.
"C:\Program Files (x86)\JetBrains\WebStorm 11.0.3\bin\runnerw.exe" F:\nodejs\node.exe Interval.js myfunc Interval myfunc Interval myfunc Interval myfunc Interval Process finished with exit code 0
3. Batalkan rujukan pemasa daripada gelung acara
Apabila hanya terdapat fungsi panggil balik pemasa dalam baris gilir acara, jika anda tidak lagi mahu melaksanakannya, anda boleh menggunakan fungsi unref() bagi objek yang dikembalikan oleh setInterval dan setTimeout untuk memberitahu gelung acara agar tidak meneruskan.
Apabila unref() digunakan dalam kombinasi dengan setTimeout, pemasa bebas mesti digunakan untuk membangunkan gelung peristiwa Penggunaan meluas juga akan memberi kesan pada prestasi, jadi gunakannya sesedikit mungkin.
4. Masa pelaksanaan setTimeout dan setInterval adalah tidak tepat
Mereka menambah panggilan balik pada baris gilir acara pada selang waktu tertentu dan pelaksanaannya tidak terlalu tepat
function simpleTimeout(consoleTime) { console.timeEnd(consoleTime); } console.time("twoSecond"); setTimeout(simpleTimeout,2000,"twoSecond"); console.time("oneSecond"); setTimeout(simpleTimeout,1000,"oneSecond"); console.time("fiveSecond"); setTimeout(simpleTimeout,5000,"fiveSecond"); console.time("50MillSecond"); setTimeout(simpleTimeout,50,"50MillSecond");
Hasil keluaran melaksanakan kod di atas beberapa kali akan berbeza.
"C:\Program Files (x86)\JetBrains\WebStorm 11.0.3\bin\runnerw.exe" F:\nodejs\node.exe timer.js 50MillSecond: 51ms oneSecond: 1000ms twoSecond: 2002ms fiveSecond: 5001ms Process finished with exit code 0
Di atas ialah keseluruhan kandungan artikel ini, saya harap ia akan membantu semua orang untuk mempelajari cara menggunakan setTimeout dan setInterval dalam Node.js.