砖html
setTimeout(() => console.log(1));
setImmediate(() => console.log(2));
process.nextTick(() => console.log(3));
Promise.resolve().then(() => console.log(4));
(() => console.log(5))();
复制代码
执行结果:node
5
3
4
1
2
复制代码
node事件分 同步、异步,因为JS的单线程原理,异步事件的处理方式依靠 事件循环。canvas
不一样的异步事件,循环规则也不一样。bash
check
阶段是否有事件列队,有则顺序执行。同时也会检查是否有定时器到达阈值,若是有则循环绕到timers
阶段时执行。若是没有其余异步任务要处理会一直停留在该阶段等待 I/O 结果返回。.on('close', callback)
在同一次循环中process.nextTick总要比Promise.then先执行异步
笔者自画,理解不当之处,敬请纠正,感激涕零 函数
setTimeout(() => {
process.nextTick(() => {
console.log(1)
process.nextTick(() => console.log(2))
});
console.log(3)
setTimeout(() => { console.log(4)})
setImmediate(() => console.log(5));
});
setTimeout(() => {
process.nextTick(() => console.log(6));
Promise.resolve(7).then(res=>console.log(res))
console.log(8)
});
(() => console.log(9))();
setImmediate(() => console.log(10));
复制代码
你答对了吗?oop
9
3
8
1
6
2
7
10
5
4
复制代码