6

現在、次のようないくつかの Ember 配列を観察しています。

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

ほとんどの場合、my_array が更新されると、複数の要素が一度に追加されます。ただし、各要素が追加されるたびにオブザーバーが 1 つずつ起動するため、非常に非効率的になります。これをより効率的に行う方法はありますか?基本的に、「my_array」に基づいて変更された配列を持つことができる必要があります

参考までに、my_array の実際のサイズは 600 ~ 1200 要素です。「何かをする」ブロックには、文字列から Date オブジェクトを作成し、各要素を json 表現に変換するなど、もう少し時間がかかるいくつかの操作が含まれます。

オブザーバーを実行する代わりに、cacheable() メソッド/フラグを使用してプロパティも試しましたが、速度が大幅に向上することはありませんでした....

4

1 に答える 1

1

(コメントを介して)配列がemberデータが取り込まれた配列であると仮定すると、array.isUpdatingプロパティを観察してみてください。私はこれで成功しました。

.findAll()唯一の欠点は、 !を使用する場合にのみ設定されることです。(だからModel.find())

于 2012-10-30T10:01:43.273 に答える