Vue可以相应数据变换,数据变换后自动更新视图,如果每次修噶都会触发视图更新,会导致多次重复和不必要的渲染,例如一个组件使用了2个data 的属性,更新两个属性如果触发两次渲染的话,会影响性能,因此Vue采取异步更新。
每次更新响应的属性之后,会将渲染的watcher放到一个队列中,在下个事件循环中再执行。当数据变化后,把watcher、update函数放进nextTick的回调函数中,并且会做过滤,通过watch的id来判断回调数组中是否已经存在这个watch的更新。函数不存在,才push。之后调用nextTick时,遍历回调数组,便会执行更新。
所以不管修改多少次数据,nextTick的回调函数中只存在watcher.update。