5

更新のレンダリング スケジュールをCollectionView(によって作成されたように{{each}}) に変更して、大量の挿入によって UI スレッドが長時間ブロックされないようにしたいと考えています。理想的には、たとえば 50 ミリ秒でできるだけ多くの要素をレンダリングしてから、制御を UI スレッドに戻し、タイムアウトを設定してさらにレンダリングを続行したいと考えています。カスタム レンダー バッファ動作を実装するための機能が Ember にあるようですが、どこから始めればよいかわかりません。

これは、しばらくの間 UI スレッドをブロックするリストへの 500 要素の挿入を示す jsfiddle ベンチマークです。

http://jsfiddle.net/Ecq8g/6/

4

1 に答える 1

2

これを行うためのより良い方法を見つけたいと思っていますが、現在、ArrayController の内容を入力する速度を遅らせています。これは本当に汚い例です。

http://jsfiddle.net/BsjSH/1/

for (var i = 0; i <= 999; i++) {
    Ember.run.later(function() {
        App.ArrayController.pushObject(App.Thing.create());
    }, i * 3);    
}​

ビューポートに表示されるアイテムのコンテンツのリストのみを維持することで、これを改善できます。CollectionView の itemViewClass の render 関数にフックし、特定の数のビューのみをレンダリングできるようにするというアイデアが気に入っています。

于 2012-05-30T23:56:54.003 に答える