Vue源码解析-Vue异步更新过程

  • src/core/observer/dep.js
    • notify() //执行了对所有watcher对遍历
      通过调用:
  • src/core/observer/watcher.js
    • update() 方法
      如果是异步 执行:
  • src/core /observer/watcher.js
    • queueWatcher()
      1. 获取所有watcher唯一id
      2. 判断watcher是否入队,去重。
      • 如果watcher为同步直接执行flushSchedulerQueue();否则nextTick(flushSchedulerQueue)
  • src/core/util/next-tick.js
    • nextTick() 内调用了
      timerFunc() 来判断当前环境的异步方法
      异步选择顺序为: Promise、MutationObserver、setImmediate 、setTimeout
      flushCallbacks() //存储用户传入回调
  • src/core /observer/scheduler.js
    • flushSchedulerQueue() 执行了队列排序,遍历队列中的watcher实例,并调用run()方法

你可能感兴趣的:(Vue源码解析-Vue异步更新过程)