Ember.JS:观察@each,但只是迭代新的/更改的项目

时间:2012-10-29 15:56:33

标签: performance ember.js

我正在观察一些像这样的Ember数组:

 observe_array: function() {
     this.get("my_array").forEach(function(e,i) {
         // do something
     });
 }.observes("my_array.@each");

大多数情况下,如果更新my_array,则会一次添加多个元素。 然而,观察者在添加每个元素时一个接一个地触发,这变得非常低效。无论如何更有效地做到这一点?基本上,我需要能够有一个基于“my_array”

的变异数组

作为参考,my_array的实际尺寸将介于600-1200个元素之间。 “做某事”块涉及一些需要花费更多时间的操作 - 从字符串创建Date对象并将每个元素转换为json表示。

我没有做一个观察者,而是尝试了一个带有cacheable()方法/标志的属性,但这并不能解决速度问题....

1 个答案:

答案 0 :(得分:1)

假设(通过注释)您的数组是一个填充了数据的数据,您应该尝试观察array.isUpdating属性。我得到了这个成功。

唯一的缺点是它只在使用.findAll()时设置! (所以Model.find()