成功进行HTTP GET后执行某些操作

时间:2017-11-30 12:07:26

标签: angular observable

我有以下功能:

public getList(): Observable<T[]> {
    let url = this.baseUrl + this.type + 'list';
    return this.http.get<any>(url, {headers: this.headers })
        .retry(3)
        .map(response => response.list as T[],
          (error: HttpErrorResponse) => {
            this.toastrService.error('everything is broken', 'Major Error', {
              timeOut: 3000,
            });
            console.log(error.name);
          });
}

我想在成功进行Webservice调用后添加一个带toasterService.success()的烤面包机,但我无法弄清楚如何在.map(response => response.list as T[]之后添加它。我怎么能这样做?

1 个答案:

答案 0 :(得分:3)

您需要订阅此方法。请记住,您正在使用Observables。因此,你需要观察员。

您可以这样做:

public getList(): Observable<T[]> {
    let url = this.baseUrl + this.type + 'list';
    return this.http.get<any>(url, {headers: this.headers })
        .retry(3)
        .map(response => response.list as T[])
}

this.getList().subscribe((response)=>{
    //Handle your success here
},
(error)=>{
    //Handle Your Error here
});

请记住,您应该仅使用地图功能将您的响应转换为特定格式。仔细观察,您已经在该行的开头返回了响应。

如上所述,应该在订阅者处理您需要在GET请求成功或错误上运行的所有代码。

你的getList()方法通过返回数据完成了它的工作。现在,处理它是订阅者的工作。

除此之外,如果你的getList方法位于服务中,那么你需要通过在组件装饰器中提供服务来在组件的构造函数中注入服务。

然后,您可以执行this.getList().subscribe()

而不是this.yourServiceInstance.getList().subscribe()