我正在使用 Angular 和 Electron,我有一个 Preferences
我想初始化的对象( Preferences.init()
)需要在 之前执行执行任何其他代码 . Angular 或 Electron 是否有应该执行此类初始化代码的特定位置?
目前我把它放入AppComponent
的构造函数中但由于该函数是异步的,我有一个竞争条件,有时数据在需要时没有正确初始化。任何帮助或建议都非常感谢!谢谢!
最佳答案
您可以使用 APP_INITIALIZER
依赖注入(inject) token 做这样的事情:
假设您创建了提供程序
@Injectable()
export class ThingProvider {
private thing: Thing = null;
constructor(private http: Http) {
}
public getThing(): Thing {
return this.thing;
}
load() {
return new Promise((resolve, reject) => {
this.http
.get('https://my-api.com/thing')
.map(res => res.json())
.subscribe(response => {
this.thing = response['value'];
resolve(true);
})
})
}
}
然后,在您的 app.module.ts
文件:export function thingsProviderFactory(provider: ThingProvider) {
return () => provider.load();
}
最后,在同一个文件中:@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
HttpModule
],
providers: [
ThingProvider,
{ provide: APP_INITIALIZER, useFactory: thingsProviderFactory, deps: [ThingProvider], multi: true }
],
bootstrap: [AppComponent]
})
export class AppModule { }
关于node.js - 在 Angular/w Electron 中在哪里执行初始化函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63965871/