我正在阅读跟踪器手册并且很难理解某些内容。
我知道这dependency.changed()
将使依赖项中的所有计算无效,导致跟踪器重新运行。
但是为什么 Meteor 在失效时会从依赖中删除计算呢?
例如,这是手册中的 Tracker 示例:
Dependency.prototype.depend = function () {
var self = this;
if (Tracker.currentComputation) {
var id = self._nextId++;
self._dependents[id] = Tracker.currentComputation;
Tracker.currentComputation.onInvalidate(function () { # Here
delete self._dependents[id]; # Here
}); # Here
}
};
Dependency.prototype.changed = function () {
for (var id in this._dependents) {
this._dependents[id].invalidate();
}
};
为什么我们要添加Tracker.currentComputation.onInvalidate()
回调以从依赖项中删除计算?对我来说似乎没有必要。
我想完全理解这一点。有任何想法吗?