2016-09-29 81 views
0

我需要每个GET之前注入一些HTTP请求。 HTTP服务在返回时需要Observable,但在返回它之前,我需要等待Promise完成。它看起来像这样:可观测链接请求

export class HttpInterceptor extends Http { 

    ... 

    get(url: string, options?: RequestOptionsArgs): Observable<Response> { 
     somePromise() 
      .success(() => { 
       // now I can return Observable object - super.get(url, otpions) 
      }); 
    } 
} 

我将不胜感激任何解决方案。这里

回答

1

问题是,由于你重写get(url: string, options?: RequestOptionsArgs): Observable<Response>方法,你不能叫super之一。

其中一个解决方案是创建服务包装Http并添加您的需求,然后像使用http一样使用此服务。

例如:

@Injectable() 
export class FooService { 

    constructor(private http: Http) { 
    } 

    public get(url: string, options?: RequestOptionsArgs): Observable<Response> { 
     somePromise() 
      .success(() => { 
         return this.http.get(url, options); 
     }); 
    } 
}