结论是微任务先于dom渲染先于宏任务吗?

微任务执行时机比宏任务早

为什么微任务比宏任务执行时间早呢?

js是单线程,和DOM渲染共用一个线程

js执行的时候,得留一些时机供DOM渲染

DOM渲染的时机在哪?

同步代码全部执行完,call stack 空闲。

尝试DOM渲染(每次轮询结束之后都会先尝试触发DOM渲染),DOM结构如果有改变就重新渲染

此时阻断时已经包含添加的3个p标签

微任务:DOM渲染后触发,例如Promise

alert("这是个微任务,此时DOM结构并未渲染")

alert("这是个宏任务,此时DOM结构已经渲染");

从event-loop解释,为何微任务执行更早

执行Promise,会将其放入一个微任务队列

微任务是ES6语法规定的

宏任务是由浏览器规定的

js代码从上往下依次执行

将同步代码放入call stack执行栈里等待执行

将微任务代码放入微任务队列等待时机执行

将宏任务代码放入WebAPIs里面等待时机执行

先将call stack执行栈中的同步代码清空

同步代码执行完成之后执行微任务队列中的微任务

触发event-loop事件循环机制,并且不停循环,监测callBack异步回调队列中是否有宏任务

webAPI等待时机将宏任务推入callback异步回调队列

event-loop检测到并触发回调队列中的宏任务事件,放入执行栈中执行

什么是宏任务和微任务,两者区别

微任务执行时机比宏任务要早

Promise三种状态,如何变化

我要回帖

更多关于 vue过渡动画 的文章

 

随机推荐