我正在尝试在我的应用中优化渲染。我有以下循环:
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安排的多个操作将合并到相同的后续运行循环中。”
有推荐的方法吗?
答案 0 :(得分:0)
Ember.run.next
真的只是一种幻想setInterval
。除非您正在寻找快速解决方案,否则没有太大的好处。
Ember.run.scheduleOnce
是更好的选择。您可以为其指定特定的生命周期runloop,如afterRender
,具体取决于您希望它在runloop中运行的时间。
我发现一种有用的方法是确保以分阶段方式更新绑定属性。这在性能方面给出了一些低成果,因为你真的只是让余烬处理大部分工作。
获得性能提升的另一个简单方法是不绑定到不会改变的东西。或者尽可能使用oneWayBinding
。