vue的异步原理、nextTick运行原理、应用场景

112 阅读1分钟

vue的异步原理

vue实现响应式并不是数据发生改变之后DOM立即变化,而是按一定的策略进行DOM的更新
具体来说,异步执行的运行机制如下。
    1、所有同步任务都在主线程上执行,形成一个执行线
    2、主线程外,还存在一个任务队列,只要异步任务有了运行结果,就在任务队列之中放置一个事件
    3、一旦执行栈中的所有同步任务执行完毕,系统就会读取任务队列,看看里面有些事件,哪些对应的异步任务,
    于是结束等待状态,进入执行栈,开始执行
    4、主线程不断重复上面的第三步

nextTick运行原理

同步代码执行>查找异步队列,推入执行栈,执行Vue.nextTick[事件循环1]>查找异步队列,推入执行栈,
执行Vue.nextTick[事件循环2]...

应用场景

在Vue的生命周期中,created()钩子函数进行的DOM操作一定要放在Vue.nextTick()的回调函数中

在Vue生命周期函数中created钩子函数中:DOM并没有进行任何渲染,而此时进行DOM操作无异于是徒劳的,所以此处一定将DOM操作的js代码放进Vue.nextTick回调函数中,与之对应的就是mounted

在数据变化后要执行某个回调函数,而这个操作要使用随数据改变而变化的DOM结构中的时候,这个操作都应该放进Vue.nextTick回调函数中