Skip to content

Commit 252b0f7

Browse files
authored
modify a translation error in Async Update Queue
原文:Internally Vue tries native Promise.then and MutationObserver for the asynchronous queuing and falls back to setTimeout(fn, 0). 原翻译:Vue 在内部使用 `Promise.then` 和 `MutationObserver` 为可用的异步队列调用回调 `setTimeout(fn, 0)`. 修改后:Vue在内部尝试利用原生的`Promise.then`和`MutationObserver`来调用异步队列,如果执行环境不兼容,会采用`setTimeout(fn, 0)`代替。
1 parent a5e7a9d commit 252b0f7

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

src/v2/guide/reactivity.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ vm.message = 'Hello!'
7676

7777
## 异步更新队列
7878

79-
你应该注意到 Vue 执行 DOM 更新是**异步的**,只要观察到数据变化,Vue 就开始一个队列,将同一事件循环内所有的数据变化缓存起来。如果一个 watcher 被多次触发,只会推入一次到队列中。然后,在接下来的事件循环中,Vue 刷新队列并仅执行必要的 DOM 更新。Vue 在内部使用 `Promise.then``MutationObserver` 为可用的异步队列调用回调 `setTimeout(fn, 0)`.
79+
你应该注意到 Vue 执行 DOM 更新是**异步的**,只要观察到数据变化,Vue 就开始一个队列,将同一事件循环内所有的数据变化缓存起来。如果一个 watcher 被多次触发,只会推入一次到队列中。然后,在接下来的事件循环中,Vue 刷新队列并仅执行必要的 DOM 更新。Vue在内部尝试利用原生的`Promise.then``MutationObserver`来调用异步队列,如果执行环境不兼容,会采用`setTimeout(fn, 0)`代替。
8080

8181
例如,当你设置 `vm.someData = 'new value'`,该组件不会马上被重新渲染。当刷新队列时,这个组件会在下一次事件循环清空队列时更新。我们基本不用关心这个过程,但是如果你想在 DOM 状态更新后做点什么,这就可能会有些棘手。一般来讲,Vue 鼓励开发者沿着数据驱动的思路,尽量避免直接接触 DOM,但是有时我们确实要这么做。为了在数据变化之后等待 Vue 完成更新 DOM,可以在数据变化之后立即使用 `Vue.nextTick(callback)`。这样回调在 DOM 更新完成后就会调用。例如:
8282

0 commit comments

Comments
 (0)