簡體   English   中英

如何在angular2上為GET請求設置全局超時

[英]How do I set global timeout for GET requests on angular2

我的應用使用angular2 http,現在我必須為所有請求設置超時。 對於單個請求,我正在這樣做:

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]},
]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM