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()方法
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。