当我计算出依赖于关系的属性时,我对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)
弗雷德里克
答案 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
})