我是棱角分明的新手,我试图找出如何在局部变量中保存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));
,这是预期的,但是分配不起作用。
非常感谢 !
你的代码完全正确。 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);
});
}
}
您正在进行异步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);
});
}