Node中的定时器详解

    在多数的事情中,我们还见面产生一对需,例如几秒钟实现网页的跳转,几分钟对于后台数据进行清理,node与javascript都兼备用代码延迟一段时间的力。在node中可采用三种植方式贯彻定时功能:超时时间,时间距离和及时定时器。虽然有立三种植定时器功能可当平常的工作中采取要发生出入的,下来我们即便伙同讨论一下这三种植定时器。

    1、用过时间来延缓办事

    超时定时器用于将工作推迟一个一定的时数额,当岁月及了,回调函数执行,而定时器会收敛。(建议:对于只有实行同样赖的工作,使用过时间)。

    1秒以后执行myFunc,函数

    setTimeout(myFunc,1000);

    当你调用setTimeout()时,回调函数myFunc会在1000毫秒之后执行。

    2、时间距离执行期限工作

    时间间隔定时器用于按照定期的延时时间距离执行工作,当延迟时间结束时,回调函数被执行,然后再重新调度该日呢延时日子,相当给一个轮询功能,定期执行函数。

    每秒中执行同样浅myFunc()

    setInterval(myFunc,1000);

    setInterval()函数会回一个定时器对象ID,利用这个clearInterval(id)可以取消时间隔定时器

    例如:

    id = setInterval(myFunc,1000);

    clearInterval(id);

    3、使用就时计时器立即执行工作

    即时计时器用来在I/O事件的回调函数开始推行后,单任何超时间时或者间隔时间事件让实践前,立即执行工作。它们允许你管工作调度为当事件队列中之手上风波做到后执行。

    setImmediate(myFunc,1000);

    代码调度myFunc()在遍历时间序列的产一个周期内执行。

    注意:还有一个凡是nextTick来调度工作

    在事件队列上调度工作之一个很管用的法就是使process.nextTick(callback)函数,这个函数可能会见导致I/O的饿,所以node通过设置默认值为1000底process.maxTickDepth来限制事件队列的每次循环可实行的nextTIck()的多少。

    接下去写一个有点之Demo来瞧这几乎单定时器的有些区分。

    

 1 console.log('成功开启node,端口号:'+app.get('port'));
 2     setImmediate(function(){
 3         console.log("setImmediate1");
 4     },1000);
 5     process.nextTick(function(){
 6         console.log("nextTick1");
 7     });
 8     setImmediate(function(){
 9         console.log("setImmediate2");
10     },1000);
11     process.nextTick(function(){
12         console.log("nextTick2");
13     });
14     console.log("---------------");

    运行结果如下:

  图片 1

    从上面的结果吃得以视,首先输出的凡有限独nextTick(),也就是说,这个函数在任何调用之前实施,之后是少只setImmediate()。这就是吓比是说,nextTick()函数提前进入了VIP仓,提前登机了~(哈哈~~这句比喻是当与大牛们的讨论着出来的,便于大家领略,要是出说的未知道的地方,请大家批评指正。)

    注:本文的参考资料来源是《Node.js+MongoDB+AngularJS
Web开发》,作者:Brad Dayley ,卢涛  李颖
译,在此对本书的作者及翻译者表示感谢。

    

    

    

 

相关文章