小编Bre*_*cht的帖子

在以角度运行函数之前等待多个 http 请求完成

我有多个从 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)

asynchronous listener angular

3
推荐指数
1
解决办法
8951
查看次数

标签 统计

angular ×1

asynchronous ×1

listener ×1