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