标签: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