js宏任务有:<script>整体代码、setTimeout、setInterval、setImmediate、Ajax、DOM事件
js微任务有:process.nextTick、MutationObserver、Promise.then catch finally
执行顺序
执行顺序:先执行同步代码,遇到异步宏任务则将异步宏任务放入宏任务队列中,遇到异步微任务则将异步微任务放入微任务队列中,当所有同步代码执行完毕后,再将异步微任务从队列中调入主线程执行,微任务执行完毕后再将异步宏任务从队列中调入主线程执行,一直循环直至所有任务执行完毕。
有什么区别?
- 进程的切换时宏任务,线程的切换是微任务
- 宿主环境发起的叫宏任务,由语言标准提供的叫微任务
- 宏任务会触发新一轮的tick,微任务不会
为什么要区别他们?
微任务的出现,使得在宏任务执行完,到浏览器渲染之前,可以在这个阶段插入任务的能力。
而宏任务和微任务,本质上也是让 JS 脚本能够在渲染阶段前后,有了完成某些功能的能力。
标签:异步,macrotask,哪些,队列,microtask,区别,任务,执行 From: https://www.cnblogs.com/alwaysrun/p/17178760.html