Vue.nextTick

在 Vue 官方文档上看到对 nextTick 的描述是在 DOM 更新之后执行回调:

capture-screen_a8d04df7-ce5d-4732-864b-18c01a04373a.png

但是它源码里面的实现逻辑是优先使用 Promise ,而 Promise 添加的是微任务,DOM 的渲染和绘制是在微任务队列完成之后才会执行的操作,那按道理说执行 nextTick 回调的时候,DOM 实际上还没有更新才对,我知道以前 nextTick 是优先使用的宏任务队列,如果是使用的宏任务队列那确实是在 DOM 更新之后才执行,不过现在都这么久了,是文档没有更新呢,还是我哪里理解错了呢?刚开始使用 Vue 的小白,希望大佬们指点指点。

阅读 2.1k
2 个回答

组件更新的逻辑也是放在微任务里的,这时候你执行了nextTick其实微任务队列里有两个微任务,当然是顺序执行了

??微任务是在DOM更新之后执行的。写个demo看看就知道了

Promise.resolve().then(() => console.log(document.querySelector('.test')));
var el = document.createElement('div');
el.className = 'test';
document.body.appendChild(el)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题