在 JS 中,大部分的任务都是在主线程上执行,常见的任务有:
1)渲染事件
2)用户交互事件
3)js脚本执行
4)网络请求、文件读写完成事件等等。
普通任务队列和延迟队列中的任务,都属于宏任务。
对于每个宏任务而言,其内部都有一个微任务队列。
1)将异步回调进行宏任务队列的入队操作。
2)将异步回调放到当前宏任务的末尾。
常见的微任务有MutationObserver、Promise.then(或.reject) 以及以 Promise 为基础开发的其他技术(比如fetch API)
这便是宏任务和微任务的概念