如何在观察者之后拦截请求在Angular 5中做了一些工作

时间:2018-02-28 08:08:10

标签: angular rxjs angular-http-interceptors

在请求之前,我需要在一个observable中做一些工作,然后让我的拦截方法处理req。我的拦截器类是这样的:

    @Injectable()
    export class ExampleHttpInterceptorProvider implements HttpInterceptor {

      constructor(private inj: Injector) { }

      intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpSentEvent | HttpHeaderResponse | HttpProgressEvent | HttpResponse<any> | HttpUserEvent<any>> {
        // here i want my observable that returns from doSomething() to work first
        // and then return next.handle(req);
      }
      doSomething(){
        return this.ExampleService.getDate().flatMap(
          (value) => {
            return this.http.post(SERVICE_URL+"value", this.getSomeParams(value));
          }
        );
      }
    }

我知道这不对,但我认为我需要做一些像

这样的事情
return this.doSomething().switchMap((r) => { return next.handle(req)});

我不知道我错过了什么。

1 个答案:

答案 0 :(得分:0)

只需使用concatdoSomething之后执行请求。

intercept(req: HttpRequest<any>, next: HttpHandler) {
    return doSomething().concat(next.handle(req));
}

doSomething(){
    // returns an observable.
}