如何在通知关系之前等待sideloading end更改

时间:2015-09-15 09:43:01

标签: ember.js ember-data

当我计算出依赖于关系的属性时,我对Ember数据有很大的性能问题。

当从服务器加载对象时,Ember要求服务器加载计算属性的依赖关系以进行计算。

好的,那是好行为。

但是,当我加载与对象的关系(使用JSON API加载)时,Ember不会等待关系(侧面)加载结束以通知更改!

所以,用这个计算的关系:

my_computed_relation: Ember.computed.filterBy('my_relation', 'attribute', false)

即使我加载" my_relation"对于该对象,my_computed_relation要求服务器加载" my_relation"在对象初始化结束之前。关系加载了两次。

您有解决性能问题的想法吗?

(Ember:1.13.3 - Ember数据:1.13.12)

弗雷德里克

1 个答案:

答案 0 :(得分:0)

如果恰好在很短的时间内通知了这个计算属性,你可以在观察者函数中使用Ember.run.debounce()并自己实现过滤函数。

例如:

mcrObserver: Ember.observer('my_relation', function() {
  const filterRelation = () => {
    let relation = this.get('my_relation');
    if (!relation) {
      return;
    }

    // ... your implementation of filter

    this.set('my_relation_computed', result); // when you finally have result
  }

  Ember.run.debounce(this, filterRelation, 500); // 500 is time in ms
})