集中处理Angular 2 http错误
发布时间:2020-12-17 17:54:04 所属栏目:安全 来源:网络整理
导读:我有一些代码处理一个处理添加令牌的类中的所有http访问.它返回一个Observable.我想捕获该类中的错误 – 特别是身份验证问题.我是一个RXjs初学者,无法弄清楚如何做到这一点仍然返回一个Observable.指向一些相当全面的rxJS 5文档(不是源代码!)的指针会很有用
我有一些代码处理一个处理添加令牌的类中的所有http访问.它返回一个Observable.我想捕获该类中的错误 – 特别是身份验证问题.我是一个RXjs初学者,无法弄清楚如何做到这一点仍然返回一个Observable.指向一些相当全面的rxJS 5文档(不是源代码!)的指针会很有用.
解决方法
在服务中执行HTTP调用时,您可以利用catch运算符:
getCompanies() { return this.http.get('https://angular2.apispark.net/v1/companies/') .map(res => res.json()) .catch(res => { // do something // To throw another error,use Observable.throw // return Observable.throw(res.json()); }); } 另一种方法可能是扩展HTTP对象以拦截错误: @Injectable() export class CustomHttp extends Http { constructor(backend: ConnectionBackend,defaultOptions: RequestOptions) { super(backend,defaultOptions); } request(url: string | Request,options?: RequestOptionsArgs): Observable<Response> { console.log('request...'); return super.request(url,options).catch(res => { // do something }); } get(url: string,options?: RequestOptionsArgs): Observable<Response> { console.log('get...'); return super.get(url,options).catch(res => { // do something }); } } 并按如下所述注册: bootstrap(AppComponent,[HTTP_PROVIDERS,new Provider(Http,{ useFactory: (backend: XHRBackend,defaultOptions: RequestOptions) => new CustomHttp(backend,defaultOptions),deps: [XHRBackend,RequestOptions] }) ]); 什么用真的取决于你的用例… (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |