vue中的this.$nextTick和Vue.nextTick

首先 this.$nextTick 其实就是Vue.nextTick, 因为this指向的就是Vue

官方说法: 在下次 DOM 更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的 DOM。(似乎有点云里雾里)

普及一下异步执行的运行机制如下:
(1)所有同步任务都在主线程上执行,形成一个执行栈(execution context stack)。
(2)主线程之外,还存在一个"任务队列"(task queue)。只要异步任务有了运行结果,就在"任务队列"之中放置一个事件。
(3)一旦"执行栈"中的所有同步任务执行完毕,系统就会读取"任务队列",看看里面有哪些事件。那些对应的异步任务,于是结束等待状态,进入执行栈,开始执行。
(4)主线程不断重复上面的第三步。



// 实例上挂载一个message数据
vm.message = 'changed'

// 想要立即使用更新后的DOM。这样不行,因为设置message后DOM还没有更新
console.log(vm.$el.textContent) // 并不会得到'changed'

//这样可以,nextTick里面的代码会在DOM更新后执行
Vue.nextTick(function(){
  console.log(vm.$el.textContent) //可以得到'changed'
})

总结: 页面渲染是异步的,想要第一时间获取更新后真实的DOM,可以使用nextStick!

你可能感兴趣的:(vue中的this.$nextTick和Vue.nextTick)