Сбой при запуске нескольких обещаний, заказанных при инициализации приложения с Angular5 - PullRequest
1 голос
/ 02 июля 2019

У меня есть два обещания (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, который запрашивают другие службы, поэтому я получаю неопределенную ошибку -> что я делаю неправильно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...