无法使用Angular5运行在App初始化中订购的多个承诺

时间:2019-07-02 15:18:43

标签: javascript angular typescript initializer

我有两个承诺(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,所以我收到了未定义的错误->我在做什么错了?

0 个答案:

没有答案