2

アプリでレンダリングを最適化しようとしています。次のループがあります。

stuff.forEach(function(content){
    ...
    content.doUpdates(); // Generates a bunch of DOM updates
})

要素が 2 つまたは 3 つしかない場合stuffは問題ありませんが、要素が 10 個以上になると、レンダリングがブラウザーをロックし始めます。これは、すべての更新を一度に実行しようとするため正常です。

そこで、レンダリングを分割したいと思います。doUpdates私の最初の考えは、それぞれをEmber.run.next http://emberjs.com/api/classes/Ember.run.html#method_nextに入れることでした(各コンテンツが個別にレンダリングされてもかまいません)。しかし、「Ember.run.next でスケジュールされた複数の操作は、後の同じ実行ループに合体します」。

それを行うための推奨される方法はありますか?

4

1 に答える 1

0

Ember.run.next本当にただの空想setIntervalです。迅速な修正を求めない限り、あまりメリットはありません。

Ember.run.scheduleOnceより良い代替手段です。afterRenderランループ内で実行するタイミングに応じて、のような特定のライフサイクルのランループを指定できます。

私が有用だと思った 1 つの方法は、バインドされたプロパティが段階的に更新されるようにすることです。これにより、ほとんどの作業を ember に任せているだけなので、パフォーマンスの面で手がかからない成果が得られます。

パフォーマンスを向上させるもう 1 つの簡単な方法は、変更されないものにバインドしないことです。またはoneWayBinding可能な場合に使用します。

于 2013-07-05T15:47:31.160 に答える