gpt4 book ai didi

knockout.js - 重置 Observables - 我做得对吗?

转载 作者:行者123 更新时间:2023-12-02 21:42:10 25 4
gpt4 key购买 nike

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

 self.dataToSend = ko.observable();
self.dataToSend(self.getPayload());
// send data, in success promise do this:
self.dataToSend = ko.observable();

这种做法有什么问题吗?垃圾收集会自动从内存中拾取旧的可观察量吗?

最佳答案

没有。这正在创建一个可观察对象。

可观察量先前绑定(bind)中绑定(bind)的可观察量不同 - 无论是通过“数据绑定(bind)”还是在其他可观察依赖图中。也就是说,代码有效地破坏了 KO 的可观察模型。

与重用相同可观察值的self.dataToSend(undefined)进行比较。

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


就 observable 的生命周期而言:通过创建一个新的 observable 并将其分配为属性,以前的 observable 不再可以通过该属性强烈访问。但是,“旧”的 observable 仍然是从所有先前建立的可观察依赖图引用,因此不太可能限制“旧”可观察对象的生命周期或以其他方式使其符合 GC 回收的条件。

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

关于knockout.js - 重置 Observables - 我做得对吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20183192/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com