相关疑难解决方法(0)

在半大数据集下Knockout.js非常慢

我刚刚开始使用Knockout.js(一直想尝试一下,但现在我终于有了借口!) - 然而,当我将一个表绑定到一个相对较小的一组时,我遇到了一些非常糟糕的性能问题数据(约400行左右).

在我的模型中,我有以下代码:

this.projects = ko.observableArray( [] ); //Bind to empty array at startup

this.loadData = function (data) //Called when AJAX method returns
{
   for(var i = 0; i < data.length; i++)
   {
      this.projects.push(new ResultRow(data[i])); //<-- Bottleneck!
   }
};
Run Code Online (Sandbox Code Playgroud)

问题是for上面的循环大约需要30秒左右,大约需要400行.但是,如果我将代码更改为:

this.loadData = function (data)
{
   var testArray = []; //<-- Plain ol' Javascript array
   for(var i = 0; i < data.length; i++)
   {
      testArray.push(new ResultRow(data[i]));
   }
};
Run Code Online (Sandbox Code Playgroud)

然后for循环在眨眼间完成.换句话说,pushKnockout observableArray对象的方法非常慢.

这是我的模板:

<tbody data-bind="foreach: …
Run Code Online (Sandbox Code Playgroud)

javascript performance knockout.js

86
推荐指数
7
解决办法
4万
查看次数

标签 统计

javascript ×1

knockout.js ×1

performance ×1