关于宏任务w3c的最新解释,(mdn已经搜不到宏任务队列)
● 每个任务都有一个任务类型,用一个类型的任务必须在一个队列,不同类型的任务可以分属不同的队列。在一次事件循环当中,浏览器可以根据实际情况从不同队列中取出任务执行
● 浏览器必须准备好一个微任务队列,微队列的任务优先所有其他任务执行
chrome的实现中至少包含下边队列:
● 延时队列(中)、交互队列(高)、微队列(最高)
但是,以目前各浏览器的执行顺序上分析,整体与原先的宏任务队列、微任务队列执行顺序一致,可以继续用其解释
宏任务:
定时器、I/O操作(读文件、网络请求)、DOM事件、requestAnimationFram、script标签
微任务:
promise.then/catch回调、async/await中的异步函数、Mutation.observe 用于监听dom