事件循环机制

Mr.Hotsuitor大约 1 分钟javascriptEventLoop事件循环

Event Loop(事件循环)

它是一个在 js 引擎等待任务执行任务进入休眠状态等待更多任务这几个状态之间转换的无限循环

js是单线程执行

执行过程:

  1. 预编译阶段;
  2. 执行阶段(自上而下,顺序执行)

预编译阶段: 进行变量和函数的声明相关操作

执行阶段:

  1. 自上而下,顺序执行
  2. 遇到宏任务,加入宏任务队列,
  3. 继续往下执行,遇到微任务,加入微任务队列,
  4. 当前 js stack 顺序执行完,等待微观任务执行,
  5. 执行 microtasks 队列的头任务,按顺序出队列继续执行,
  6. 如果执行完当前微任务,遇到新的 microtasks,继续加入 microtasks queue,等待微任务队列执行完毕。
  7. 开始执行宏任务队列,如果遇到 microtasks,跳到步骤1,重复循环。
  8. 所有宏任务队列执行完毕,进入 js引擎 等待任务状态。

任务队列[1]

Reference

阮一峰博客open in new windowjavascript-event-loopopen in new window


  1. 任务队列参考资料open in new window ↩︎