我有一点问题,我有这个代码,当它必须返回状态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不太容易^^)
有人想解决这个问题吗?
答案 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
};