为什么我们需要订阅者方法:Angular2

时间:2016-11-03 09:16:24

标签: angular rxjs observable

我很难理解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方法中提取数据和其他所有内容?

由于

2 个答案:

答案 0 :(得分:2)

HTTP调用是异步的,这意味着它们在被调用后不会立即完成。

subscribe方法有两件事:

  1. 它开始'调用(在这种情况下,它发送HTTP请求)

  2. 它调用您在调用完成后作为参数(回调函数)传递的函数,以及已返回的数据。

答案 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);