涉及到的角色:
- call stack 调用栈
- event table 事件注册表,主要做异步事件与事件回调的对应关系映射
- event quene 事件回调队列
1.同步代码直接放入call stack
2.遇到异步 ,如setTimeout ,会先在event table中产生映射,等异步处理完,该执行会调函数的时候,才将会调函数push 到 evevt queue中等待执行
3.如果主线成空闲,就从event queue中shift一个放入 call stack 中执行
4.然后,重复
其中 队列又分为两种, 如下图:
微任务,由js 引擎控制,具有优先权,微任务队列清空后,就可以执行渲染UI