2017-12-22 24 views
0

私は使用しているメモリを解放したいという観測があります。 nullに設定すると、一部のサブスクリプションで参照されているため、ガベージコレクタは収集しません。ノックアウト:オブザーバブルからすべてのサブスクリプションを削除する

質問です。どうすればすべての加入者を削除できますか?例えば

作成:

が削除:

this.x(null); 

が、それはいくつかのサブスクリプションで参照されbecuaseそれは削除されません。

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

Iドンtはdisposeサブスクリプションにしたい - xの新しい値のために私はyを購読したい。

私はそれがはっきりしていることを望みます。

おかげ

答えて

1

問題は、あなたがxが更新されたときに更新されないコードで、その内容のコピーを作ったということです。私はあなたに例を挙げていることに気がついていますが、subscribeは一般的にコードの匂いで、xが変更されたときに更新するcomputedを作成しなければならないことを示唆しています。

xに関連付けられているすべてのメモリを削除すると同時に、その内容のコピーを保持することはできません。

+0

コメントありがとうございますが、ここでどのように計算されますか? – amhev

+0

サブスクリプション関数が計算された場合、 'z'は' x'が変更されたときに 'x'の新しい値を取得するので、古いコピーはありません。 –

+0

私はそれを試みます。ありがとう、メリークリスマス – amhev

関連する問題