yoshino 7 жил өмнө
parent
commit
07cfb49394

+ 1 - 1
docs/art/8vue-reactive-dep-watch.md

@@ -1296,7 +1296,7 @@ const queue: Array<Watcher> = []
 let flushing = false
 ```
 
-`flushing` 变量是一个标志,我们知道放入队列 `queue` 中的所有观察者将会在突变完成之后统一执行更新,当更新开始时会将 `flushing` 变量的设置为 `true`,代表着此时正在执行更新,所以根据判断条件 `if (!flushing)` 可知只有当队列没有执行更新时才会简单的将观察者追加到队列的尾部,有的同学可能会问:“难道在队列执行更新的过程中还会有观察者入队的操作吗?”,实际上是会的,典型的例子就是计算属性,比如队列执行更新时经常会执行渲染函数观察者的更新,渲染函数中很可能有计算属性的存在,由于计算属性在实现方式与普通响应式属性有所不同,所以当触发计算属性的 `get` 拦截器函数时会有观察者入队的行为,这个时候我们需要特殊处理,也就是 `else` 分支的代码,如下:
+`flushing` 变量是一个标志,我们知道放入队列 `queue` 中的所有观察者将会在突变完成之后统一执行更新,当更新开始时会将 `flushing` 变量的设置为 `true`,代表着此时正在执行更新,所以根据判断条件 `if (!flushing)` 可知只有当队列没有执行更新时才会简单的将观察者追加到队列的尾部,有的同学可能会问:“难道在队列执行更新的过程中还会有观察者入队的操作吗?”,实际上是会的,典型的例子就是计算属性,比如队列执行更新时经常会执行渲染函数观察者的更新,渲染函数中很可能有计算属性的存在,由于计算属性在实现方式与普通响应式属性有所不同,所以当触发计算属性的 `get` 拦截器函数时会有观察者入队的行为,这个时候我们需要特殊处理,也就是 `else` 分支的代码,如下:
 
 ```js {10-14}
 export function queueWatcher (watcher: Watcher) {