如何在 angular 6 中保存 http get 响应对象

How can I save http get response object in angular 6

我是 angular 的新手,我想知道如何在局部变量中保存 http.get(url)

的响应

这是我的代码:

export class AppComponent {

  private url = 'http://ws.audioscrobbler.com/2.0/?method=artist.getinfo&api_key=MY_KEY&format=json&artist=The+Weeknd' ;
  public data;

  constructor(private http: HttpClient) { 
    this.http.get(this.url).subscribe(response => this.data = response);
    console.log(this.data); // -> The result is undefined...
  }

}

起初,我尝试了 this.http.get(this.url).subscribe(response => console.log(response)); 并且效果如预期,但是分配不起作用。

非常感谢!

您正在进行异步 HTTP 调用。所以你需要在 subscribe.

里面添加 console.log
export class AppComponent {

  private url = 'http://ws.audioscrobbler.com/2.0/?method=artist.getinfo&api_key=MY_KEY&format=json&artist=The+Weeknd' ;
  public data;

  constructor(private http: HttpClient) { 
    this.http.get(this.url).subscribe(response => {
       this.data = response;
       console.log(this.data);
    });
  }

你的代码完全正确。 console.log 未显示响应值的原因是因为它是 运行 在处理响应之前。启动 HTTP 请求后,JavaScript 将继续执行当前函数。

如果你想记录响应,你需要在响应处理程序中这样做

export class AppComponent {

  private url = 'http://ws.audioscrobbler.com/2.0/?method=artist.getinfo&api_key=MY_KEY&format=json&artist=The+Weeknd' ;
  public data;

  constructor(private http: HttpClient) { 
    this.http.get(this.url).subscribe(response => {
        this.data = response;
        console.log(this.data);
    });
  }    
}