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