typescript - forkjoin föråldrad i Angular 10 alternativ


Nedan är min kod:

 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]);
            });
  }

----tjänst

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

Fork join visas som föråldrad. Finns det något alternativ att använda med async/await. Tack.

REDIGERA: Jag vet inte om det är rätt eller inte men använde async/await..Min slutgiltiga kod är som nedan

  async getBranchDetails()

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

Svar #1

Du blandar Observables och Promises. Använd antingen Observables och RxJS, eller håll dig till Promises.

Observables-ansatsen (rekommenderas):

getBanks(): Observable<IBankResponse[]> {
   return this.httpClient.get(baseUrl + '/Bank/GetBanks')
     .pipe(map(res => res.data));
}
const banks$ = this.bankDataService.getBanks();
const branchTypes$ = this.branchDataService.getBranchTypes();

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

Löften närmar sig:

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

När du arbetar med Promises kan du använda Promise.all för att vänta på att alla förfrågningar ska bli klara:

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

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

Relaterade artiklar