0
我的应用使用angular2 http,现在我必须为所有请求设置超时。对于单个请求,我正在执行此操作:如何在angular2上为GET请求设置全局超时
this.http.get(this.endPoint)
.timeout(10000, new Error('timeout'))
.map(res => res.json());
如何为我的应用程序拥有的所有获取抽象出这个?
我的应用使用angular2 http,现在我必须为所有请求设置超时。对于单个请求,我正在执行此操作:如何在angular2上为GET请求设置全局超时
this.http.get(this.endPoint)
.timeout(10000, new Error('timeout'))
.map(res => res.json());
如何为我的应用程序拥有的所有获取抽象出这个?
我通过创建扩展Http类来解决这个问题。我不确定HttpService是否是最好的名字,但它对我有用。
import { Injectable } from '@angular/core';
import 'rxjs/add/operator/map';
import { Observable } from 'rxjs/Observable';
import {Http, XHRBackend, RequestOptions, Request, RequestOptionsArgs, Response} from '@angular/http';
@Injectable()
export class HttpService extends Http{
constructor (backend: XHRBackend, options: RequestOptions) {
super(backend, options);
}
request(url: string|Request, options?: RequestOptionsArgs): Observable<Response> {
return super.request(url, options).timeout(5000, new Error('timeout'));
}
}
我也要申报的HttpService的一个供应商,并创建一个工厂,了解有关app.module.ts
providers: [
{provide: ErrorHandler, useClass: IonicErrorHandler},
{provide: HttpService,useFactory: (backend: XHRBackend, options: RequestOptions) => {
return new HttpService(backend, options);
}, deps: [XHRBackend, RequestOptions] },
{provide: AuthHttp, useFactory: getAuthHttp, deps: [HttpService]},
]
见http://restlet.com/company/blog/2016/ 4月18日/相互作用-高效上带有一个的RESTful服务与 - angular2和 - rxjs部分-3 /。 –