有一个问题不明白,vue官网解释,DOM的更新非同步生效的,而是Vue将它们缓存在一个队列中,直到下一个Tick才执行,那这个DOM的异步更新到底算是微任务还是宏任务呢
如果说是微任务,那么为什么解释为下一次Tick才执行,当主执行栈执行完任务后,如果微任务队列有任务,拿到主执栈执行,然后页面进行渲染,算作一次Tick,而此时DOM更新操作算作微任务的话就是当前Tick的微任务执行,而不是在下一次Tick中执行
如果说DOM的异步更新时宏任务的话,在下一次Tick的时候作为宏任务执行就又有一个疑问
nextTick将传入的函数生成一个异步任务,可以是微任务也是宏任务,那么当代码执行到nextTick的时候,如果生成的是微任务,当本次执行栈结束后,不是会执行当前这个nextTick生成的微任务吗,此时也不会获取到更新后的DOM
个人理解,官方理解的一次Tick是指主执行栈结束后,微任务执行前算作一次Tick,然后Dom的异步更新是一种微任务
这个其实要分 VUE 的版本来看: