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

问题描述 投票:0回答:1

在请求之前,我需要在一个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)});

我不知道我错过了什么。

angular rxjs angular-http-interceptors
1个回答
0
投票

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

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

doSomething(){
    // returns an observable.
}
© www.soinside.com 2019 - 2024. All rights reserved.