我有多个从 MySQL 数据库中获取 JSON 数据的 http 帖子。我想要一个函数来侦听所有这些,并在所有这些都返回已收到数据后运行下一段代码。
我已经尝试了使用 await 的多种异步变体,但该函数似乎没有等待 HTTP 帖子完成。
我有一个风险服务 risk.service.ts 来获取 riskTable 例如:
getRiskTable(): Observable<Risk[]> {
return this.http.get(`${this.baseUrl}/getRiskTable`).pipe(
map((res) => {
this.riskTable = res['data'];
return this.riskTable;
}),
catchError(this.handleError));
}
Run Code Online (Sandbox Code Playgroud)
在我的仪表板上,我调用此代码:
getRiskTable():any {
return this.riskService.getRiskTable().subscribe(
(res: []) => {
this.riskTable = res; // the value is correctly captured here
return true;
},
(err) => {
this.error = err;
}
);
}
Run Code Online (Sandbox Code Playgroud)
然后是一个运行多个这些函数的异步函数,理论上它应该等到所有函数完成然后记录值。但是由于某种原因,全局变量 this.riskTable 在这个函数中是未定义的。
async getAllData(){
let riskTable = await this.getRiskTable();
let risks = await this.getAllRisks();
console.log(riskTable); …Run Code Online (Sandbox Code Playgroud)