Knockout.js 重置观测值-我做得对吗?

Knockout.js 重置观测值-我做得对吗?,knockout.js,Knockout.js,每隔一段时间,我就会有一个可观察到的,我需要“重置”到它的默认值,例如,当我刚刚向服务器发送了一些新数据,并且我得到了一个成功的回发。我通常这样做: self.dataToSend = ko.observable(); self.dataToSend(self.getPayload()); // send data, in success promise do this: self.dataToSend = ko.observable(); 这种方法有什么问题吗?垃圾收集会自动从内存中

每隔一段时间,我就会有一个可观察到的,我需要“重置”到它的默认值,例如,当我刚刚向服务器发送了一些新数据,并且我得到了一个成功的回发。我通常这样做:

 self.dataToSend = ko.observable();
 self.dataToSend(self.getPayload());
 // send data, in success promise do this:
 self.dataToSend = ko.observable();
这种方法有什么问题吗?垃圾收集会自动从内存中提取旧的可观察对象吗

否。这是在创建一个新的可观察对象

这个新的可观察对象与以前绑定中绑定的可观察对象不同——通过“数据绑定”或其他可观察依赖关系图。也就是说,代码有效地打破了KO的可观察模型

与重用相同可观察对象的
self.dataToSend(未定义)
比较

在某些[罕见的]情况下,拥有一个可观察的可观察对象可能是有意义的,但外部容器可观察对象仍应通过可观察写入重新分配


就可观察生命周期而言:通过创建一个新的可观察对象并将其指定为属性,以前的可观察对象不再通过该属性强可达。。然而,“旧”可观察对象仍然是从所有先前建立的可观察依赖关系图中引用的,因此不可能限制“旧”可观察对象的寿命,或者使其有资格由GC回收

因此,除了删除整个相关的可观察依赖关系图之外,最好只更新相同的可观察依赖关系图,这将避免创建断开连接的孤立依赖关系