javascript - 分析 KnockoutJS observableArray

标签 javascript dom knockout.js profiling

我想在 KnockoutJS 中分析一个 observableArray,看看在 HTML 中填充和渲染 observableArray 需要多长时间。

我计划使用如下所示的老式方法。我从中得到的结果准确吗?或者有更好的方法来进行此分析

JavaScript

    var arr = [],
        itemCount = 200;

    for (var i = 0; i < itemCount; i++) {
        arr.push('item ' + i);
    }

    var t1 = new Date();
    var viewModel = {
        items: ko.observableArray(arr),
        vmName: ko.observable('View Model')
    };

    ko.applyBindings(viewModel);
    var t2 = new Date();


    console.log(t2 - t1); //Shows the time in milliseconds 

HTML

<div data-bind="foreach: items">
    <div data-bind="html: $data"></div>
</div>

我根据结果生成的图表

enter image description here

最佳答案

正如您的图表所示,这基本上是执行此操作的正确方法。这是因为 ko.applyBindings 是同步调用。参见这里:is ko.applyBindings synchronous or asynchronous?

我会像这样进行一个小修改,因为您对分析创建可观察对象所需的时间不感兴趣。然而,这个时间可以忽略不计,只会为您的分析添加一个微小的(如果有的话)常数。

var viewModel = {
    items: ko.observableArray(arr),
    vmName: ko.observable('View Model')
};

var t1 = new Date();
ko.applyBindings(viewModel);
var t2 = new Date();


console.log(t2 - t1); //Shows the time in milliseconds 

关于javascript - 分析 KnockoutJS observableArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26954034/

相关文章:

javascript - 遍历 JSON 和渲染表元素没有结果

javascript - 是否可以从字形图标创建自定义光标?

javascript - javascript是否禁止将输入类型从密码更改为密码?

c# - 从传统的 ASP 迁移。 NET MVC 到 WebApi + knockout

javascript - knockout : dependency of two observables bidirectional

javascript - 如何使用 squirrel.windows 创建注册表项

javascript - css滚动内容阴影效果

javascript - Javascript 是否会删除已删除 DOM 元素的事件处理程序?

javascript - ondomready和jquery的ready函数有什么区别?

javascript - 初始化空表单中断页面; knockout