我有从商店读取的服务。我创建了一个基本初始化程序来findAll数据来填充商店,然后我启动服务。该服务恰好使用商店,但当服务访问它时,商店中没有数据。如果我在应用程序加载后手动调用服务中的函数,我就能获得该值。我假设这是因为findAll的回调被放在事件队列上,并且我在事件队列移除该存储填充事件之前运行该服务。如果是这种情况,如何在填充商店后告诉Ember启动服务?
第一个初始化程序(我已经这样做了,所以先运行'之前')
export function initialize(application) {
let store = application.__container__.lookup('service:store');
store.findAll('my-data');
}
第二个初始化程序
export function initialize(application) {
let fSociety = application.__container__.lookup('service:service-FSociety');
fSociety.start();
}
我也尝试使用run循环,但似乎没有用。
export function initialize(application) {
let fSociety = application.__container__.lookup('service:service-FSociety');
Ember.run.scheduleOnce('afterRender', this, function() {
fSociety.start();
}
}
答案 0 :(得分:1)
简短的回答是你不能。
即使您使用初始化程序' change
和before
属性可以正确指定它们的运行顺序,它们仍然是异步的,并且在开始自己的工作之前它们不会等待先前的初始化程序完成。
我的建议是使用单个实例初始化程序并执行以下操作:
after