从API角度检索数据

时间:2018-07-11 14:20:47

标签: angular api components

我正在从不同的API检索数据,并且遇到了一些问题。

第一部分运行良好,代码如下:

ngOnInit(): void {
  this.http.get('http://.../api/getData?table=getdata&filter=remediation_status:1')
    .subscribe( data => { this.incidents = data, console.log(data);})
}

对于第二步,我尝试使用第一步中检索到的值从另一个API URL和同一组件中检索数据,但被视为“未定义”。

For example `console.log(this.incidents); ` returns "undefined" while it's defined just above. 

是否可以从API检索数据并将其用于同一组件(在ngOnInit():中)?预先谢谢

1 个答案:

答案 0 :(得分:0)

我假定第二个代码在第一个代码之后,因此,让我解释一下:
您的代码将通过以下方式读取:

  • 您的HTTP调用将启动,但不会停止代码流
  • 即使未完成HTTP调用,该HTTP调用之后的代码也将运行
  • 您在HTTP调用中设置的变量将是未定义的,因为HTTP调用尚未完成
  • 在某些情况下,您的变量将具有数据,因为将完成HTTP调用,但并非在您需要的那一刻

因此,有两种方法可以解决此问题:

  • 您可以将第二个代码设置为一个函数,然后从HTTP Request的subscription方法调用该函数,这样,您将拥有需要使用的数据
  • 您可以使用async&await等待“直到您的HTTP请求完成,然后继续执行代码,这意味着它将读取您的HTTP调用,但不会继续执行您的代码”(直到完成,您可以读取)关于此herehere
  • 的更多信息