下面是我的代码:
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);
}
最佳答案
您正在混合 Observables 和 Promises。要么使用 Observables 和 RxJS,要么坚持使用 Promises。
Observables 方法 (受到推崇的):
getBanks(): Observable<IBankResponse[]> {
return this.httpClient.get(baseUrl + '/Bank/GetBanks')
.pipe(map( res => res.data));
}
let banks = this.bankDataService.getBanks();
let branchTypes = this.branchDataService.getBranchTypes();
forkJoin([banks,branchTypes]).subscribe(results => {
this.setFormBankData(results[0]);
this.setFormBranchTypeData(results[1]);
});
promise 方法 :getBanks(): Promise<IBankResponse[]> {
return this.httpClient.get<Result<IBankResponse[]>>(baseUrl + '/Bank/GetBanks')
.pipe(map( res => res.data)).toPromise();
}
使用 Promise 时,您可以使用 Promise.all等待所有请求完成:let banks = this.bankDataService.getBanks();
let branchTypes = this.branchDataService.getBranchTypes();
Promise.all([banks,branchTypes]).then(results => {
this.setFormBankData(results[0]);
this.setFormBranchTypeData(results[1]);
});
关于angular - forkjoin 在 Angular 10 替代方案中已弃用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65353457/