setTimeout
的使用与浏览器中的setTimeout
类似,不过就实现方式而言,却会占用一定的性能:
- 由于是事件监听机制,某个流程占用时间过长就会导致时间的精确度变低。
- 采用红黑树的机制,整体的时间复杂度是
o(lgn)
nextTick
则不同:
- 执行到
nextTick
时,会将其加到当前队列的队尾 - 实现机制不是红黑树机制,事件复杂度
O(1)
idle观察者、I/O观察者、Check观察者
nextTick
属于Idle观察者
setTimeout
属于Check观察者
优先级:
idle观察者 > I/O观察者 > Check观察者