我在ember存储中有大量的特定类型的模型,这里有大约100,000条或更多的记录,我通过将一个JSON对象传递给该存储的createRecord方法创建了该模型。当我尝试使用store.unloadAll('record-type')卸载所有这些记录时,这些记录最终都会从存储中完全卸载,但操作需要大约90秒才能完成。
更让我困惑的是,unloadAll方法会立即返回,并且没有返回promise,但web将冻结,并且,使用ember检查器,我可以看到所有记录仍然存在,直到大约90秒后它们最终消失。
我从一个操作中调用unloadAll方法,如下所示:
actions: {
unloadStore() {
console.log('calling unloadAll');
this.get('store').unloadAll('record-type');
console.log('unloadAll returns immediately');
}
}我创建这些模型,如下所示:
for(let obj of data.response){
store.createRecord('record-type', {
'id': obj._id.$oid,
'prop1': obj.prop1,
'prop2': obj.prop2,
'prop3': obj.prop3
});
}卸载这么多记录需要80+秒的时间吗?还是我做错了什么?我通过Chrome的性能分析器注意到,ember.debug.js文件的removeObject方法花费了大量时间。我认为这与arrayContentWillChange的重复触发以及在unloadAll执行期间更改记录数组所触发的其他事件有关。性能配置文件的屏幕截图链接为here。
发布于 2018-10-03 04:37:39
我也有同样的问题,这对我很有效:
// route.js
actions: {
reloadModel() {
this.store.peekAll('my-model').forEach((r) => {
this.store.unloadRecord(r);
})
this.refresh(); // to force a fresh load of data from API
}
}https://stackoverflow.com/questions/45699951
复制相似问题