事件循环机制
大约 1 分钟
Event Loop(事件循环)
它是一个在
js 引擎
在等待任务
、执行任务
和进入休眠状态等待更多任务
这几个状态之间转换的无限循环
js是单线程执行
执行过程:
- 预编译阶段;
- 执行阶段(自上而下,顺序执行)
预编译阶段: 进行变量和函数的声明相关操作
执行阶段:
- 自上而下,顺序执行
- 遇到宏任务,加入宏任务队列,
- 继续往下执行,遇到微任务,加入微任务队列,
- 当前
js stack
顺序执行完,等待微观任务执行, - 执行
microtasks
队列的头任务,按顺序出队列继续执行, - 如果执行完当前微任务,遇到新的
microtasks
,继续加入microtasks queue
,等待微任务队列执行完毕。 - 开始执行宏任务队列,如果遇到
microtasks
,跳到步骤1,重复循环。 - 所有宏任务队列执行完毕,进入
js引擎
等待任务状态。
任务队列[1]