2

我正在尝试优化我的应用程序中的渲染。我有以下循环:

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

如果stuff只有 2 或 3 个元素,一切都很好,但是当它有 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是更好的选择。您可以为它指定特定的生命周期 runloop,例如afterRender,具体取决于您希望它何时在 runloop 中运行。

我发现一种有用的方法是确保绑定属性以分阶段的方式更新。这在性能方面提供了一些低端成果,因为您实际上只是让 ember 处理大部分工作。

获得性能提升的另一种简单方法是不绑定到不会改变的东西。或oneWayBinding尽可能使用。

于 2013-07-05T15:47:31.160 回答