事件循环、宏任务和微任务

66 阅读1分钟

什么是事件循环

js是单线程,同一时间只能执行一个事件,会有运行阻塞问题,为了解决这个问题,就用到了事件循环机制。

事件循环的过程

图片.png

  • 判断主执行栈里的任务是异步还是同步
  • 同步任务先执行
  • 异步任务由事件触发线程分发到相应的线程执行
  • 异步任务执行完后
  • 由事件触发线程把回调放到相应的事件队列
  • js引擎会询问事件队列里是否有回调,同时还会看主线程同步代码执行完了没
  • 同步代码执行完毕
  • 按照先微任务,后宏任务的顺序把事件队列的回调放到主线程执行

宏任务

script主代码块、定时器任务

微任务

promise的函数。
微任务是es6才出现的,为了让事件队列里的某些任务可以先执行。