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

问题描述 投票:0回答:2

我是棱角分明的新手,我试图找出如何在局部变量中保存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));,这是预期的,但是分配不起作用。

非常感谢 !

json angular http-get
2个回答
0
投票

你的代码完全正确。 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);
    });
  }    
}

0
投票

您正在进行异步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);
    });
  }
© www.soinside.com 2019 - 2024. All rights reserved.