Angular 角度依赖注入。为什么我的服务的方法按此顺序执行?

Angular 角度依赖注入。为什么我的服务的方法按此顺序执行?,angular,typescript,dependency-injection,service,inversion-of-control,Angular,Typescript,Dependency Injection,Service,Inversion Of Control,我的前端从Okta认证开始。声明中存储了一个特定于用户的ID,用于将配置对象从Cosmos DB中拉出。配置对象包含一些值,这些值传递给其他服务上的端点,以检索将在前端显示的一些客户端数据 依赖关系树如下所示: Constructing Configuration Service Constructing Client Data Service retrieved configService.TenantConfig Constructing Configuration Service ret

我的前端从Okta认证开始。声明中存储了一个特定于用户的ID,用于将配置对象从Cosmos DB中拉出。配置对象包含一些值,这些值传递给其他服务上的端点,以检索将在前端显示的一些客户端数据

依赖关系树如下所示:

Constructing Configuration Service
Constructing Client Data Service
retrieved configService.TenantConfig
Constructing Configuration Service
retrieved configService.TenantConfig
Constructing Client Data Service
  • ConfigService
    取决于。(
    OktaAuthService
    HttpClient
  • DataService
    取决于(
    ConfigService
    HttpClient
在我的服务中,我的构造函数如下所示

配置服务

export class ConfigurationService {

  constructor(public oktaAuth: OktaAuthService, private http: HttpClient) {
    console.log("Constucting Configuration Service");
    this.RetrieveVariables() 
  }

  private async RetrieveVariables() {
    await this.oktaAuth.getUser()
    .then(c => {
      this.user = c;
      console.log(c);
      this.tenantId = this.user.TenantId;
      this.getTenantConfiguration()
        .subscribe(config => {
          this.tenantConfig = config;
          console.log(this.tenantConfig);
          this.clientDataServiceUrl = this.tenantConfig.clientDataServiceUrl;
          this.dataLakeKey = this.tenantConfig.dataLakeAccessKey;
          this.dataLakeAccount = this.tenantConfig.dataLakeAccountName;
          console.log("retreived configService.tenantConfig")
        });
    });
  }

  private getTenantConfiguration(): Observable<TenantConfiguration> {
    var url = `${this.configurationServiceUrl}/tenant/${this.tenantId}`;
    try{
      var res = this.http.get<TenantConfiguration>(url);   
    }catch(e) {
       console.log(e);
    }
    return res;
  }
}
出于某些原因,日志如下所示:

Constructing Configuration Service
Constructing Client Data Service
retrieved configService.TenantConfig
Constructing Configuration Service
retrieved configService.TenantConfig
Constructing Client Data Service
当我期望他们看起来像这样时:

Constructing Configuration Service
Constructing Client Data Service
retrieved configService.TenantConfig
Constructing Configuration Service
retrieved configService.TenantConfig
Constructing Client Data Service
为什么客户机数据服务的构造在配置服务的构造函数完成之前就开始了