Javascript 淘汰:从可观察到的数据库中删除所有订阅

Javascript 淘汰:从可观察到的数据库中删除所有订阅,javascript,knockout.js,garbage-collection,Javascript,Knockout.js,Garbage Collection,我有一个可观察到的,我想释放正在使用的内存。 当设置为null时,垃圾收集器不会收集垃圾,因为他在某个订阅中被引用 问题是-如何删除所有订户 例如: 创建: this.x = ko.observable(); 删除: this.x(null); 但由于它在某些订阅中被引用,因此未将其删除: this.y.subscribe(function (newValue) { var z = this.x(); }; 我不想dispose订阅-因为需要x的新值,我想y订阅它 我希望这是清楚的

我有一个可观察到的,我想释放正在使用的内存。 当设置为null时,垃圾收集器不会收集垃圾,因为他在某个订阅中被引用

问题是-如何删除所有订户

例如:

创建:

this.x = ko.observable();
删除:

this.x(null);
但由于它在某些订阅中被引用,因此未将其删除:

this.y.subscribe(function (newValue) {
   var z = this.x();
};
我不想
dispose
订阅-因为需要
x
的新值,我想
y
订阅它

我希望这是清楚的


谢谢

问题在于,您用代码复制了它的内容,而当
x
更新时,它不会更新。我知道你只是举了个例子,但是
subscribe
通常是一种代码味道,你的情况告诉我,你应该做一个
computed
,当
x
发生变化时更新,这将解决你的问题


您无法删除与
x
相关的所有内存,同时保留其内容的副本。

谢谢您的评论,但是如何计算会有帮助?如果订阅函数是计算的,
z
将在
x
更改时获得新的
x
,这样就不会有旧版本了,我会试试看。谢谢,祝你圣诞快乐