我有一个observable,我想释放使用的内存。 当设置为null时,垃圾收集器不会收集它,因为在某些订阅中引用了其他人。
问题是 - 如何删除所有订阅者?
例如:
创建:
this.x = ko.observable();
去除:
this.x(null);
但是它没有删除,因为它在某些订阅中被引用:
this.y.subscribe(function (newValue) {
var z = this.x();
};
我不希望dispose
订阅 - 因为x
的新值我希望y
订阅它。
我希望很清楚。
由于
答案 0 :(得分:1)
问题在于,您已在代码中复制了其内容,但在x
更新时未更新。我意识到你只是举了一个例子,但是subscribe
通常是一种代码味道,你的情况告诉我你应该制作一个computed
来更新x
变化,这将解决您的问题。
您无法摆脱与x
相关联的所有内存,同时保留其内容的副本。