我正在使用带有延迟更新插件的knockoutjs 2.2。我通过Ajax从服务器加载了大量的数据,并使用它来实例化一堆对象(比如大约5K对象,每个对象都有六个属性),其中一些然后用HTML呈现。整个过程需要10-20秒,但我不确定时间到了什么时候,以及淘汰赛是否做了额外的工作,它不应该做。
JSON结构的传输和创建相对较快;我添加了时序调用来测量从JSON数据创建数据图。我现在要做的是测量knockoutJS计算ko.computed
值并应用绑定所需的时间。我怎么做?是什么触发了更新(在填充视图模型时已延迟),以及如何将其括起来测量花费的时间?
答案 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');
}
};