Kuasai penggunaan setTimeout dan setInterval dengan pantas dalam Node.js_node.js

WBOY
Lepaskan: 2016-05-16 15:09:56
asal
1485 orang telah melayarinya

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);
Salin selepas log masuk
"C:\Program Files (x86)\JetBrains\WebStorm 11.0.3\bin\runnerw.exe" F:\nodejs\node.exe timer.js

Process finished with exit code 0
Salin selepas log masuk

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
Salin selepas log masuk

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);

Salin selepas log masuk

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
Salin selepas log masuk

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");

Salin selepas log masuk

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
Salin selepas log masuk

Di atas ialah keseluruhan kandungan artikel ini, saya harap ia akan membantu semua orang untuk mempelajari cara menggunakan setTimeout dan setInterval dalam Node.js.

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan