您好,欢迎访问一九零五行业门户网

快速掌握Node.js中setTimeout和setInterval的使用方法

node.js和js一样也有计时器,超时计时器、间隔计时器、及时计时器,它们以及process.nexttick(callback)函数来实现事件调度。今天先学下settimeout和setinterval的使用。
一、settimeout超时计时器(和gcd中的after类似)
在node.js中可以使用node.js内置的settimeout(callback,delaymillseconds,[args])方法。当调用settime()时回调函数会在delaymillseconds后
执行.settime() 会返回一个定时器对象id,可以在delaymillseconds到期前将id传给cleartimeout(timeoutid)来取消。
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
如果将cleartimeout(mytimeout);这行注释之后可以看到是会执行myfunc()。
"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
二、setinterval间隔计时器(和gcd中的dispatch_source_t或nstimer类似)
间隔计时器用来按定期的时间间隔来执行工作.和settimeout类似,node.js中内置setinterval(callback,delaymillisecond,[args])来创建并返回定时器对象id,通过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);
上面代码是创建setinterval的回调函数myfunc,参数为interval,setinterval每隔1s执行一次,settimeout是在5秒之后执行,它的回调函数让间隔计时器取消。
"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
三、从事件循环中取消定时器引用
当事件队列中仅存在定时器回调函数时,如果不希望再执行它们,可以使用setinterval和settimeout返回对象的unref()函数来通知事件循环不要继续。
当unref()和settimeout结合使用,要用独立计时器来唤醒事件循环,大量使用对性能也会产生影响,应尽量少用。
四、settimeout和setinterval执行时间是不精确的
它们是间隔一定时间将回调添加到事件队列中,执行也不是太精确
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");
以上代码多执行几次输出的结果也是不一样的。
"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
以上就是本文的全部内容,希望对大家学习node.js中settimeout和setinterval的使用方法有所帮助。
更多快速掌握node.js中settimeout和setinterval的使用方法。
其它类似信息

推荐信息