Итак, у меня есть служба, которая выполняет некоторые вызовы HTTP API...
все примеры, которые я нашел в Интернете, предполагают, что возвращенный JSON действителен...
то, что я хочу сделать, это вызвать тот же вызов, что и блок catch в http
so
getData(id: string): Observable<someEntity>{
return this.http.get(someUrl)
.map(this.handleResponse.bind(this))
.catch(this.handleError);
}
private handleResponse(res: Response){
if(res.status === 200){
let body = res.text();
if(!this.appService.IsJsonString(body)){
return this.handleError(new Error('The response is not valid JSON '));
}else{
return res.json() || {};
}
}
}
private handleError (error: any) {
this.appService.errorAdd(error.status, error.statusText, 'Error loading Index data', ErrorTypes.Data);
let errMsg = (error.message) ? error.message : error.status ? `${error.status} - ${error.statusText}` : 'Server error';
return Observable.throw(errMsg);
}
когда я делаю это в своем компоненте:
this.myService.getData(someID)
.subscribe(
data => {...},
error => {
// LOGIC HERE
}
);
Я хочу, чтобы обе ошибки обрабатывались // LOGIC HERE (блок ошибок).... а не одна в блоке успеха, а другая в ошибке
Что я делаю не так?