JavaScript事件循环

102 阅读1分钟

JS是单线程的,但是一些高耗时操作就带来了进程阻塞问题。为了解决这个问题,JS有两种任务的执行模式:同步模式和异步模式。

宏任务与微任务

在异步模式下,创建异步任务主要分为宏任务与微任务两种。ES6规范中,宏任务(MacroTask)成为Task,微任务(MicroTask)成为Jobs。宏任务是有宿主(浏览器、Node)发起的,而微任务有JS自身发起。

宏任务与微任务的几种创建方式

  • 宏任务:setTimeout、setInterval、MassageChannel、I/O,事件队列、setImmediate(Node环境)、script(整体代码块)
  • 微任务:requestAnimationFrame(有争议)、MutationObserver(浏览器环境)、Promise.[then/catch/finally]、process.nextTick(Node环境)、queueMicrotask