【问题标题】:Knockout Redefine observable - memory leaks?Knockout 重新定义 observable - 内存泄漏?
【发布时间】:2015-05-25 19:15:19
【问题描述】:

理论问题

假设我有一个变量“test”,它被定义为可观察的:

var test = ko.observable("start");

一些代码之后,我有时会调用一个函数:

test = ko.observable("pass n");

每次关联一个新的 observable 进行测试时,前一个 observable 都会被销毁,或者它会泄漏内存? 注意:我知道第二个代码应该这样做

test("pass n");

我只是好奇。

那么用 var 重新定义 test 怎么样,比如在第一行?

【问题讨论】:

    标签: knockout.js memory-leaks observable


    【解决方案1】:

    具体如何工作取决于 JavaScript 的实际实现,特别是垃圾回收的方式。你问了一个简短而看似简单的问题,而实际上这是一个非常复杂的话题。查看out this related SO question 了解这座冰山一角。

    但是,如果您通常有这种代码,那么简短的版本,AFAIK:

    var test = ko.observable("abc");
    test = ko.observable("xyz");
    

    那么可能不会再引用ko.observable("abc") 的结果,并且那个 observable 将受到垃圾回收。

    淘汰赛与那个简化的例子没有太多关系。如果您有订阅飞来飞去,事情可能会变得更加棘手,等等。如果您想了解更多关于这方面的信息,您需要询问更具体、更具体的问题,或者可能一般阅读有关 KO 和内存问题的信息。 This blog post by RP Niemeyer 是一个好的开始。

    【讨论】:

      猜你喜欢
      • 2015-11-06
      • 2021-09-21
      • 1970-01-01
      • 2015-08-07
      • 1970-01-01
      • 1970-01-01
      • 2014-07-21
      • 2019-03-24
      • 2017-10-01
      相关资源
      最近更新 更多