node中的事件循环模型
- clearImediate : 清空立执行函数
- clearInterval : 清除循环定时器
- clearTimout : 清除一次性定时器
- setImmediate : 设置立即执行函数
- setInterval : 设置循环定时器
- setTimeout : 设置一次性定时器
node事件循环模型经历的阶段
- 阶段一
- timers (定时器阶段–setTimeout,setInterval)
- 开始计时
- 执行定时器回调
- timers (定时器阶段–setTimeout,setInterval)
- 阶段二
- pending callbacks (系统阶段)
- 阶段三
- idle,prepare(准备阶段)
- 阶段四
- poll (轮询阶段 (核心) )
- 如果回调队里有待执行的回调,从回调队列中取出回调函数,同步执行,直到回调队列为空或者达到系统最大限制
- 如果回调队列为空,在此阶段停留,等待回调函数被插入回调队列.
- 如果有设置过setImmediate,进入下一个check阶段
- 目的: 为了执行 setImmediate 所设置的
- 如果未设置过 setImmediate
- 在此阶段停留,等待回调函数被插入回调队列
- 如果定时器到点了,进行下提个check阶段
- 原因: 为了走第五\六阶段,随后进入第一阶段(循环)
- 如果有设置过setImmediate,进入下一个check阶段
- poll (轮询阶段 (核心) )
- 阶段五
- check (专门用于执行 setImmediate 所设置的回调)
- 第六阶段
- close callbacks
- 关闭回调阶段
- close callbacks
peocess.nextTick()
- 用于立即执行函数;能在任意阶段优先执行,(主线程除外,只在回调队列优先)