任何人都可以解释有关VueJS异步更新队列的更多信息吗?

时间:2017-01-03 15:47:39

标签: vue.js

我正在Async Update Queue阅读vue官方文档,并对此感到困惑:

  

每当观察到数据更改时,它将打开队列和缓冲区   在同一事件循环中发生的所有数据更改

same event loop是什么意思,同时会有多个事件循环?它还说队列将被刷新in the next event loop “tick”tick在这里意味着什么?如果没有下一个事件循环或下一个事件循环从不打勾怎么办?

1 个答案:

答案 0 :(得分:2)

让我尝试回答这个问题,作为我的理解。

  

同一个事件循环意味着什么,同时会有多个事件循环?

不是将任何vue属性/方法/变量中的每个更改应用于视图,而是在queue中保存所有这些更改,并在以后刷新这些更改。在pushing队列中的更改的过程中,通过不对注释here进行的每次更改重新呈现进行优化:

/**
 * Push a watcher into the watcher queue.
 * Jobs with duplicate IDs will be skipped unless it's
 * pushed when the queue is being flushed.
 */
export function queueWatcher (watcher: Watcher) {
  ...
  ...
  

队列将在下一个事件循环“tick”中刷新,这里的tick是什么意思?

内部Vue尝试本机Promise.then和MutationObserver进行异步排队,然后回退到setTimeout(fn,0)。 Here您可以看到第一个偏好是本地Promise.then后MutationObserver native Promise is not available,最差fallback to setTimeout