如何计时knockoutjs更新?

时间:2013-01-16 19:56:43

标签: knockout.js

我正在使用带有延迟更新插件的knockoutjs 2.2。我通过Ajax从服务器加载了大量的数据,并使用它来实例化一堆对象(比如大约5K对象,每个对象都有六个属性),其中一些然后用HTML呈现。整个过程需要10-20秒,但我不确定时间到了什么时候,以及淘汰赛是否做了额外的工作,它不应该做。

JSON结构的传输和创建相对较快;我添加了时序调用来测量从JSON数据创建数据图。我现在要做的是测量knockoutJS计算ko.computed值并应用绑定所需的时间。我怎么做?是什么触发了更新(在填充视图模型时已延迟),以及如何将其括起来测量花费的时间?

1 个答案:

答案 0 :(得分:1)

您可以创建记录时间的自定义绑定。这是一个例子:http://jsfiddle.net/mbest/WTYhs/

var startTime = new Date().getTime();
ko.bindingHandlers.logTime = {
  reset: function() {
    startTime = new Date().getTime();
  },
  init: function(element, valueAccessor) {
    var value = valueAccessor();
    console.log(value.msg + ' init: ' + (new Date().getTime() - startTime) + ' ms');
  },
  update: function(element, valueAccessor) {
    var value = valueAccessor();
    if (typeof value.track == 'function')
      value.track();
    console.log(value.msg + ' update: ' + (new Date().getTime() - startTime) + ' ms');
  }
};