我已经在Angular中覆盖了Http:
return super.request(request, options).map((res: Response) => {
if (res.json().result.hasOwnProperty('errors')) {
new ErrorWatcher().reportError(res.json().result.errors);
}
return res;
}).catch(this.catchAuthError(this));
catchAuthError
是:
private catchAuthError (self: HttpService) {
return (res: Response) => {
if (res.status < 400 || res.status === 500) {
console.log('N');
}
return Observable.throw(res);
};
}
当出现错误时,它会返回Observable:return Observable.throw(res);
。
因此我的客户端功能下降了:
this.service.get()
.subscribe(data => {}, resultError => {
console.log(resultError);
});
因为期望获得data
。
我只需要在我的HttpService中处理catch。我不想这样做:
this.service.get()
.subscribe(data => {}, resultError => {
console.log(resultError);
}).catch(...);
我可以执行以下操作:
通过这里自己的对象? return Observable.throw({"errors" : true});
?之后在客户if (!res.hasOwnProperty('errors')) {}
我在HttpService中试过这个:
res['errors'] = true;
return Observable.from(res);
否则抛出数据!
也是这样:
res.json().push(['errors']);
return Observable.throw(res);