js中的微任务和宏任务

105 阅读1分钟

宏任务(macrotask )和微任务(microtask )

微任务 (promise 、async await)

  • 遇到微任务,放在当前任务列的最底端(then或者catch里面的内容)

宏任务 (setTimeout setInterval)

  • 遇到宏任务,放到下一个新增任务列的最顶端

当前任务列执行完成了再去执行下一个任务列

  • 当then和then的外层都有宏任务时,先创建外层的宏任务

除了setTimeout, setInterval 之外还有别的宏任务

api浏览器支持node支持
setTimeout支持支持
setInterval支持支持
setImmediate不支持支持
requestAnimationFrame支持不支持

除了Promise.then之外还有别的微任务

api浏览器支持node支持
process.nextTick不支持支持
MutationObserver支持不支持
Promise.then catch finally支持支持