如何在 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);
});
}
}
我是 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.logexport 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);
});
}
}