# 事件循环 Event Loop
# 为什么需要事件循环
- JS是单线程,同一个时间只能做同一件事,所有任务需要排队,如果前一个任务耗时很长,后一个任务就需要一直等待
# 什么是事件循环
- 同步任务进入主执行栈, 异步任务进入任务队列.
- 主线程内的任务执行完毕, 去任务队列读取对应的任务, 推入主线程执行
- 这个过程是不断循环的
# 微任务
- promise
- process.nextTick
- Object.observe
- MutationOberserver
# 宏任务
- script
- setTimeout
- setInterval
- I/O
- UI rendering
# 执行流程
- 执行同步代码
- 执行栈为空, 查询是否有微任务需要执行
- 执行所有微任务
- 执行所有宏任务
- 开始下一轮事件循环