码迷,mamicode.com
首页 > 其他好文 > 详细

nextTick setImmediate setTimeout(fn, 0)

时间:2017-06-04 16:51:42      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:llb   next   nbsp   time   顺序   比较   settime   oop   执行   

  • setImmediate()属于check观察者,其设置的回调函数,会插入到下次事件循环的末尾。

  • process.nextTick()设置的回调函数,会在代码运行完成后立即执行,会在下次事件循环之前被调用,原文是 “the callback will fire as soon as the code runs to completion, but before going back to the event loop.”

  • process.nextTick()所设置的回调函数会存放到数组中,一次性执行所有回调函数。

  • setImmediate()所设置的回调函数会存到到链表中,每次事件循环只执行链表中的一个回调函数。

 

Node.js的特点是事件循环,其中不同的事件会分配到不同的事件观察者身上,比如idle观察者,check观察者,I/O观察者等等,事件循环每次循环称为一次Tick,每次Tick按照先后顺序从事件观察者中取出事件进行处理。

 process.nextTick()属于idle观察者, setImediate() 属于check观察者。在每一个轮询环检查中,idle观察者先于I/O观察者,I/O观察者先于check观察者。

 

setTimeout(fn, 0)  的方式比较浪费性能,(setTimeout的创建要涉及到创建红黑树等性能消耗), 用setImmediate()和process.nextTick()的操作相对比较轻量

nextTick setImmediate setTimeout(fn, 0)

标签:llb   next   nbsp   time   顺序   比较   settime   oop   执行   

原文地址:http://www.cnblogs.com/chengdabelief/p/6940763.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!