# 事件循环
# node中的事件循环
在进程启动时,Node便会创建一个类似于while(true)的循环,每执行一次循环体的过程我们称为Tick。
每个Tick的过程就是查看是否有事件待处理,如果有,就取出事件及其相关的回调函数。
如果存在关联的回调函数,就执行它们。
# 异步任务
# 微任务
一个需要异步执行的函数,执行时机是在主函数执行结束之后、当前宏任务结束之前
常见的微任务有:
- Promise.then
- MutaionObserver
- Object.observe(已废弃;Proxy 对象替代)
- process.nextTick(Node.js)
# 宏任务
宏任务的时间粒度比较大,执行的时间间隔是不能精确控制的,对一些高实时性的需求就不太符合
常见的宏任务有:
- script (可以理解为外层同步代码)
- setTimeout/setInterval
- UI rendering/UI事件
- postMessage、MessageChannel
- setImmediate、I/O(Node.js) j
# 执行流程
执行一个宏任务,如果遇到微任务就将它放到微任务的事件队列中 当前宏任务执行完成后,会查看微任务的事件队列,然后将里面的所有微任务依次执行完
# 流程图
