1.爷爷组件操作孙组件的ref,用nextTick未获取到,用settimeout可以,因此对nextTick来做探究
2.源码实现中,优先用promise->MO->setImedieate>setTimeout,为什么微任务优于宏任务?
用户操作数据变更后(同步任务,eg,i++100次),vue会把所有同步任务结果算出(i=100),再在nextTick中更新DOM,而不是更新100次DOM
角度1:浏览器先执行同步任务-微任务-UIrending,如果用宏任务来做nextTick,导致再一次同步任务-UIrending
角度2:浏览器先执行同步任务-微任务-UIrending,微任务包含vue内部watch更新DOM,也包括我们写的nextTick,插入到微任务和UIrending之间,只需要UIrending一次
之所以不理解微任务做nextTick较优是由于,我以为DOM生成和UIrending是一回事。问题2解决。
问题1,可能是做了异步加载?有待研究