typescript 在Angular 10替代项中不建议使用forkjoin

svmlkihl  于 2022-12-14  发布在  TypeScript
关注(0)|答案(1)|浏览(109)

下面是我的代码:

async getBranchDetails()  ----component  method

  {
    let banks = this.bankDataService.getBanks();
    let branchTypes = this.branchDataService.getBranchTypes();

    forkJoin([banks,branchTypes]).subscribe(results => {
              this.setFormBankData(results[0]);
              this.setFormBranchTypeData(results[1]);
            });
  }

--服务

async getBanks(): Promise<IBankResponse[]> {
        return await  this.httpClient.get<Result<IBankResponse[]>>(baseUrl + '/Bank/GetBanks')
        .pipe(map( res => res.data)).toPromise();
    }

Fork join显示已过时。async/await是否有其他用法。谢谢。
编辑:我不知道它是否正确,但使用asyn/await..我的最终代码如下

async getBranchDetails()

  {
    let banks =  await this.bankDataService.getBanks();
    let branchTypes= await this.branchDataService.getBranchTypes();
    this.setFormBankData(banks);
    this.setFormBranchTypeData(branchTypes);
   
  }
ki1q1bka

ki1q1bka1#

您混淆了可观察项和承诺项。请使用可观察项和RxJS,或者坚持使用承诺项。

可观察方法(建议):

第一个

承诺方法

getBanks(): Promise<IBankResponse[]> {
  return this.httpClient.get<Result<IBankResponse[]>>(baseUrl + '/Bank/GetBanks')
    .pipe(map( res => res.data)).toPromise();
}

使用承诺时,可以使用Promise.all等待所有请求完成:

const banks = this.bankDataService.getBanks();
const branchTypes = this.branchDataService.getBranchTypes();

Promise.all([banks, branchTypes]).then(results => {
  this.setFormBankData(results[0]);
  this.setFormBranchTypeData(results[1]);
});

相关问题