我很难理解Angular2 Http(Observable)方法:
这是我的代码:
login(username:string,password:string) {
let headers = new Headers();
this.createAuthorizationHeader(headers,username,password);
return this.http
.get(this.url,{headers:headers})
.map(this.extractData)
.catch(this.handleError).subscribe(e => console.log(e));
}
private extractData(res: Response) {
let body = res.json();
console.log(body);
return body.data || { };
}
我的问题是:为什么我们需要订阅方法,如果我们可以在Observable的map方法中提取数据和其他所有内容?
由于
答案 0 :(得分:2)
HTTP调用是异步的,这意味着它们在被调用后不会立即完成。
subscribe
方法有两件事:
它开始'调用(在这种情况下,它发送HTTP请求)
它调用您在调用完成后作为参数(回调函数)传递的函数,以及已返回的数据。
答案 1 :(得分:1)
没有subscribe()
什么都不会发生。 Observable
是懒惰的,只有在subscribe()
,toPromise()
或forEach()
被调用时才会执行。
您不需要在subscribe()
中执行任何操作,只需要调用它。
return this.http.get(this.url,{headers:headers})
.map(this.extractData)
.catch(this.handleError)
.subscribe(e => console.log(e));
或
return this.http.get(this.url,{headers:headers})
.subscribe(this.extractData, this.handleError);