Ember.js 如何在通知关系更改之前等待侧加载结束

Ember.js 如何在通知关系更改之前等待侧加载结束,ember.js,ember-data,Ember.js,Ember Data,当我计算依赖于关系的属性时,余烬数据的性能有一个很大的问题 当从服务器加载对象时,Ember要求服务器加载computed属性的依赖关系来计算它 好的,这是好行为 但是,当我加载与对象的关系(使用JSON API进行侧加载)时,Ember不会等到关系(侧)加载结束后才通知更改 因此,通过这个计算关系: my_computed_relation: Ember.computed.filterBy('my_relation', 'attribute', false) 即使我用对象加载“我的关系”,我

当我计算依赖于关系的属性时,余烬数据的性能有一个很大的问题

当从服务器加载对象时,Ember要求服务器加载computed属性的依赖关系来计算它

好的,这是好行为

但是,当我加载与对象的关系(使用JSON API进行侧加载)时,Ember不会等到关系(侧)加载结束后才通知更改

因此,通过这个计算关系:

my_computed_relation: Ember.computed.filterBy('my_relation', 'attribute', false)
即使我用对象加载“我的关系”,我的计算关系也会要求服务器在对象初始化结束之前加载“我的关系”。关系被加载两次

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

(余烬:1.13.3-余烬数据:1.13.12)


Frederic

如果此计算属性恰好在短时间内得到通知,您可以在observer函数中使用
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
})

谢谢你,丹尼尔。我将测试你的解决方案。目前,我通过在筛选器之前加载所有数据来解决问题。