promise async/await setTimeout setImmediate
原生 node
事件模型中,队列循环可以细分为四个级别:
- 当前
tick
(当前执行中的队列,我们正常理解的同步代码) - 第二队列
nextTick
(idle
观察者,process.nextTick
),多个idle
观察者在一个循环体中 - 正常队列
Tick
(I/O
观察者,Promise
),多个I/O
观察者在一个循环体中 - 正常队列
Tick
(I/O
观察者,setTimeout
),多个I/O
观察者在一个循环体中 - 最后队列
lastTick
(check
观察者, setImmediate),单个check
观察者独占一个循环体
async
内部实现为 Promise
当前队列 > 第二队列 nextTick > 正常队列 promise > 正常队列 setTimeout > 正常队列... > 最后队列 setImmediate