Nodejs的nextTick和setTimeout

setTimeout的使用与浏览器中的setTimeout类似,不过就实现方式而言,却会占用一定的性能:

  1. 由于是事件监听机制,某个流程占用时间过长就会导致时间的精确度变低。
  2. 采用红黑树的机制,整体的时间复杂度是o(lgn)

nextTick则不同:

  1. 执行到nextTick时,会将其加到当前队列的队尾
  2. 实现机制不是红黑树机制,事件复杂度O(1)

idle观察者、I/O观察者、Check观察者

nextTick属于Idle观察者
setTimeout属于Check观察者

优先级:

idle观察者 > I/O观察者 > Check观察者

推荐阅读更多精彩内容