Node.js 提供的 nextTick和setImmediate
- nexTick和setImmediate属于node中process模块中方法
- process.nextTick()属于idle观察者,setImmediate()属于check观察者.在每一轮循环检查中,idle观察者先于I/O观察者,I/O观察者先于check观察者.
- idle观察者,也就是事件轮询最先进行的任务
- I/O观察者, 也就是事件轮询中的任务(任务中的回调函数)
- check观察者 事件轮询中的任务的结束
在具体实现上,process.nextTick()的回调函数保存在一个数组中,setImmediate()的结果则是保存在链表.
在行为上,process.nextTick()在每轮循环中会将数组中的回调函数全部执行完.而setImmediate()在每轮循环中执行链表中的一个回调函数.
使用格式:
案例如下:process.nextTick(callback) process.setImmediate(callback)
总结:执行顺序process.nextTick( function () { console.log('A') process.nextTick( function(){ console.log('B') }) setImmediate( function () { console.log('C') }) }) setImmediate( function () { console.log( 'D' ) process.nextTick( function(){ console.log('E') }) setImmediate( function () { console.log('F') }) }) process.nextTick( function () { console.log( 'G') }) console.log( '主线程任务' ) //主线程任务 A G B D C E F
1. nextTick > setImmediate 2. nextTick 中 的nextTick > 外层的setImmediate 3. 外层setImmediate > 内层的setImmediate