Knockout:从observable中删除所有订阅

时间:2017-12-22 15:17:38

标签: javascript knockout.js garbage-collection

我有一个observable,我想释放使用的内存。 当设置为null时,垃圾收集器不会收集它,因为在某些订阅中引用了其他人。

问题是 - 如何删除所有订阅者?

例如:

创建:

this.x = ko.observable();

去除:

this.x(null);

但是它没有删除,因为它在某些订阅中被引用:

this.y.subscribe(function (newValue) {
   var z = this.x();
};

我不希望dispose订阅 - 因为x的新值我希望y订阅它。

我希望很清楚。

由于

1 个答案:

答案 0 :(得分:1)

问题在于,您已在代码中复制了其内容,但在x更新时未更新。我意识到你只是举了一个例子,但是subscribe通常是一种代码味道,你的情况告诉我你应该制作一个computed来更新x变化,这将解决您的问题。

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