Skip to content

Dep 类

首先需要明确,有一个全局的Dep.target存储的是当前活跃的Watcher实例

depend 方法

ts
// 简化后如下,将当前依赖,放到watcher实例的依赖列表中
depend() {
	if (Dep.target) {
		Dep.target.addDep(this)
	}
}

addSub 方法

ts
addSub(sub: DepTarget) {
	// 将watcher实例放到当前依赖的订阅列表中
	this.subs.push(sub)
}

notify 方法

ts
notify() {
	// stabilize the subscriber list first
	const subs = this.subs.filter(s => s) as DepTarget[]

	for (let i = 0, l = subs.length; i < l; i++) {
		const sub = subs[i]
		// 依赖更新之后,去调用每个watcher实例的update方法
		sub.update()
	}
}