HTTP请求中的可观察链接

时间:2016-09-29 11:53:08

标签: asynchronous angular

我需要在每次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 个答案:

答案 0 :(得分: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);
        });
    }
}