0

遅延更新プラグインでノックアウト js 2.2 を使用しています。私は Ajax 経由でサーバーから適度に大量のデータをロードし、それを使用して一連のオブジェクト (たとえば、それぞれが半ダースのプロパティを持つ約 5,000 個のオブジェクト) をインスタンス化し、その一部を HTML でレンダリングします。全体のプロセスには 10 秒から 20 秒かかりますが、時間がどこに向かっているのか、ノックアウトが実行すべきではない余分な作業を行っているのかどうかはわかりません。

JSON 構造の転送と作成は比較的迅速に行われます。JSON データからのデータ グラフの作成を測定するタイミング コールを追加しました。ここでやりたいことは、knockoutJS がko.computed値を計算してバインディングを適用するのにかかる時間を測定することです。それ、どうやったら出来るの?何が更新をトリガーしますか (ビュー モデルが作成されている間に延期されました)、また更新にかかった時間を測定するにはどうすればよいでしょうか?

4

1 に答える 1

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');
  }
};
于 2013-01-16T21:22:51.063 に答える