背景
很多朋友在写面试题:宏任务与微任务的执行时机时,容易犯迷糊。之前我也写过两篇文章,这次加上详细的讲解,让大家更容易理解
什么是宏任务、微任务?
1.首先要称得上是宏任务、微任务的,必须是一个回调函数,例如:
setTimeout(getList,5000);
这个getList
就是一个回调函数
2.必须是异步执行的回调函数
3.区分宏任务与微任务
宏任务
:
渲染事件(如解析 DOM、计算布局、绘制);
用户交互事件(如鼠标点击、滚动页面、放大缩小等);
JavaScript 脚本执行事件;
网络请求完成、文件读写完成事件
微任务
:
MutationObserver;
Promise.resolve();
就这么些任务,在浏览器环境中,系统已经把他们区分成了宏任务和微任务,并没有其他特殊的含义!!死记下来就行了
每个宏任务对应了一个微任务队列
每一个宏任务,都对应了一个微任务队列,没什么特别的,你现在知道了这点,而且知道了哪些是宏任务和微任务
全局同步代码,是特殊的宏任务
全局的同步执行代码,也要看成一个宏任务,那这