У меня есть два обещания (ConfigurationServices и roleService), и я хочу инициализировать сначала ConfigurationService-Singleton, чтобы получить некоторые данные конфигурации, а затем инициализировать 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();
});
});
};
}
Вот запрос Роль-Обещание:
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 не удалась, поскольку в Configationservice отсутствует ConfigurationDTo, который запрашивают другие службы, поэтому я получаю неопределенную ошибку -> что я делаю неправильно?