Angular 2:使用Observable返回

时间:2017-10-03 15:59:43

标签: angular http observable

我有一点问题,我有这个代码,当它必须返回状态200(一切正常)时工作

   httpCallGet(pathToCall: string, varToSend: string ): Observable<any> {
    return this.http.get(this.url + pathToCall + varToSend, {headers : this.headers} )
        .map( res => res.json())
        .catch(this.handleError);
}

但是当URL错误并且我有404错误时,我的网站崩溃时出现控制台错误。

如何在控制台上正确捕获此类错误并且可以在错误时重试?

我尝试.retry(3)但是这段代码不起作用.subscribe不能用于Observable返回(我对Observable不太容易^^)

有人想解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

让您的服务返回一个可以返回结果或抛出错误的observable。

 httpCallGet(pathToCall: string, varToSend: string ): Observable<any> {
  return this.http.get(this.url + pathToCall + varToSend, {headers : this.headers} )
    .map( res => res.json())
    .catch(error => Observable.throw('error');
};

然后在您的组件中处理错误。

getHttpData = () => {
  this.service.httpCallGet('someurl', '')
    .subscribe(
      result => this.handleResult(result),
      error => this.handleError(error)
    )
};

handleResult = (data) => {
  // do stuff with data
};

handleError = (error) => {
  // do stuff with error
};