- src/core/observer/dep.js
- notify() //执行了对所有watcher对遍历
通过调用:
- notify() //执行了对所有watcher对遍历
- src/core/observer/watcher.js
- update() 方法
如果是异步 执行:
- update() 方法
- src/core /observer/watcher.js
- queueWatcher()
- 获取所有watcher唯一id
- 判断watcher是否入队,去重。
- 如果watcher为同步直接执行flushSchedulerQueue();否则nextTick(flushSchedulerQueue)
- queueWatcher()
- src/core/util/next-tick.js
- nextTick() 内调用了
timerFunc() 来判断当前环境的异步方法
异步选择顺序为: Promise、MutationObserver、setImmediate 、setTimeout
flushCallbacks() //存储用户传入回调
- nextTick() 内调用了
- src/core /observer/scheduler.js
- flushSchedulerQueue() 执行了队列排序,遍历队列中的watcher实例,并调用run()方法
Vue源码解析-Vue异步更新过程
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...