我有两个承诺(ConfigurationServices和roleService),我想首先初始化ConfigurationService-Singleton以获得一些Configurationdata,然后根据给定的配置初始化RoleService-Singleton以获得RoleInformation。
我正在使用Angular 5,这是代码的样子:
那是初始化器:
{
provide: APP_INITIALIZER,
useFactory: configurationFactory,
deps: [
ConfigurationService,
RoleService
],
multi: true
},
在这里,我尝试在初始化过程中引入订单:
export function configurationFactory(configurationService: ConfigurationService, roleService: RoleService): Function {
return (): Promise<any> => {
return new Promise((resolve, reject) => {
return configurationService.fetchConfiguration()
.then(data => {
return roleService.requestRole()
})
.then((data) => {
resolve();
})
.catch(() => {
reject();
});
});
};
}
这是requestRole-Promise:
public requestRole(): Promise<any> {
return this.gmcService.getRole().pipe(
tap( role => {
this._role=role;
this._isReadWriteUser = this._role === this.READ_WRITE_ABBREVIATION;
})
).toPromise();
}
这是配置承诺:
fetchConfiguration(): Promise<ConfigurationDTO> {
const result: Observable<ConfigurationDTO> = this.httpClient.get<ConfigurationDTO>(environment.configuration);
const promise: Promise<ConfigurationDTO> = result.toPromise();
promise.then(configuration => {
this.configuration = configuration;
console.log('configuration: ' + JSON.stringify(configuration));
});
return promise;
Configurationservice的初始化似乎失败了,因为Configrationservice中没有其他服务正在请求的ConfigurationDTo,所以我收到了未定义的错误->我在做什么错了?