题目
左边和右边的代码,分别重新渲染了几次 rCount
(忽略页面第一次初始化渲染)
左边
for 循环中 5 次赋给 rCount 值,都是同步代码
每次触发了数据劫持的 setter ,最终会执行 vue 的 nexttick,而 nexttick 的大部分情况是执行一个微任务(Promise)
所以只重新渲染了 1 次
右边
for 循环中产生了 5 个宏任务
宏任务 | 微任务 |
---|---|
宏任务1 宏任务2 宏任务3 宏任务4 宏任务5 |
执行第一个宏任务,给变量赋值,最终会执行 vue 的 nexttick,即产生一个微任务1
宏任务 | 微任务 |
---|---|
宏任务2 宏任务3 宏任务4 宏任务5 | 微任务1 |
微任务优先级高,所以先执行微任务,进行一次渲染
然后再执行宏任务2,产生一个微任务2,再执行微任务,进行一次渲染
依次类推…
一共重新渲染了 5 次