Knockout计算的可观察量极大地减慢了较大数据集上的浏览器的速度

时间:2016-02-08 10:23:47

标签: javascript jquery mvvm knockout.js

我正在使用嵌套的ViewModel-Objects和KnockoutJS,并使用它遇到烦人的麻烦。假设你有一个这样的嵌套模型:

  

-Totals(所有客户端的一些累计,包含ClientsContainer数组,~10个计算可观察量)

     

-ClientContainer(所有客户端MoneyAccounts的总计,包含MoneyAccounts数组,~10个计算可观察量)

     

- MoneyAccounts(所有AccountPositions的总计,包含AccountPositions数组,~25个计算可观察量)

     

---- AccountPositions(~25个计算可观察量,~25个计算可观察量)

我从JS结构映射了viewModel(35个ClientsContainer,每个Client Container包含大约10个MoneyAccount,每个MoneyAccount包含大约2个位置)

首先,我发现AccountPositions上的ComputedObservables在初始化后没有刷新。所以,我必须在每个ComputedFunction中使用dummyObservable强制刷新,然后调用knockouts notifySubscribers() - Function。

似乎这种方法在性能方面非常昂贵,即使我在整个ViewModel上只有大约700个AccountPosition(这不是那么多......)。我不得不推迟500 Millisecons的每次刷新调用,以防止浏览器完全挂断。即使是现在,我的浏览器也非常不堪重负。渲染我的数据表需要大约15分钟,这绝对应该加载得更快..

我在这里缺少什么?是否有"技术"加载/初始化嵌套的ViewModel结构更快?或者Knockout根本无法管理具有出色性能的数据集?

提前致谢

0 个答案:

没有答案