首页 >

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

web前端|js教程快速掌握Node.js中setTimeout和setInterval的使用方法【node.js】
Node.js,setTimeout,setInterval
web前端-js教程
Node.js和js一样也有计时器,超时计时器、间隔计时器、及时计时器,它们以及process.nextTick(callback)函数来实现事件调度。今天先学下setTimeout和setInterval的使用。
网狐平台源码,vscode怎样切换主题,ubuntu 默认启动,tomcat 突然闪退,pythonide爬虫,php 调用jsp,灰帽seo技术优化,网站商城系统图,学生信息系统模板lzw
A、setTimeout超时计时器(和GCD中的after类似)
仿微信客服源码 h5,vscode安装汉化包失败,ubuntu自带刻录,tomcat项目页面乱码,python爬虫 钱,php scrypt,海南短视频seo专业实操lzw
在node.js中可以使用node.js内置的setTimeout(callback,delayMillSeconds,[args])方法。当调用setTime()时回调函数会在delayMillSeconds后
在线读报系统源码,vscode如何表格对齐,ubuntu 引导删除,免安装的tomcat,爬虫抓肉鸡,返利网源码php,江门新站如何做seo,网站自动采集,帝国cms 模板 php代码lzw
执行.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.jsProcess 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.jsmyfuncProcess finished with exit code 0
B、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.jsmyfunc Intervalmyfunc Intervalmyfunc Intervalmyfunc IntervalProcess finished with exit code 0
C、从事件循环中取消定时器引用

当事件队列中仅存在定时器回调函数时,如果不希望再执行它们,可以使用setInterval和setTimeout返回对象的unref()函数来通知事件循环不要继续。

当unref()和setTimeout结合使用,要用独立计时器来唤醒事件循环,大量使用对性能也会产生影响,应尽量少用。

D、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.js50MillSecond: 51msoneSecond: 1000mstwoSecond: 2002msfiveSecond: 5001msProcess finished with exit code 0

快速掌握Node.js中setTimeout和setInterval的使用方法【node.js】
  • 怎么通过xml文件,实现前台消息提示
  • 怎么通过xml文件,实现前台消息提示 | 怎么通过xml文件,实现前台消息提示 ...

    快速掌握Node.js中setTimeout和setInterval的使用方法【node.js】
  • 让JavaScript中setTimeout支持链式操作办法【javascript】
  • 让JavaScript中setTimeout支持链式操作办法【javascript】 | 让JavaScript中setTimeout支持链式操作办法【javascript】 ...

    快速掌握Node.js中setTimeout和setInterval的使用方法【node.js】
  • 浅谈js的setInterval事件
  • 浅谈js的setInterval事件 | 浅谈js的setInterval事件 ...