工作方式
依赖跟踪是如何工作的呢?事实上它是很简单的,跟踪算法是这样的:
- 当你声明一个依赖属性时,KO会立即调用求值算法得到其初始值;
- 当你的计算函数运行的时候,KO会把监控属性通过计算得到的值都记录在一个Log中;
- 当你的计算结束的时候,KO会订阅能够访问的监控属性或依赖属性,订阅的回调函数是重新运行你的计算函数,循环整个过程,回到步骤1(并且注销不再使用的订阅);
- KO会通知所有的订阅者,你的依赖属性已经被设置了新值。
所以说,KO并不仅仅是在第一次执行计算函数时检测你的依赖项,它每次都会检测。这意味着,你的依赖是可以动态的,举例来说:依赖A能决定你是否也依赖于B或C,这时候只有当A或者你选择的B或者C发生变化时计算函数才能运行。你不需要定义依赖关系:在代码运行时会自动检测到。