在请求之前,我需要在一个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)});
我不知道我错过了什么。
答案 0 :(得分:0)
只需使用concat
在doSomething
之后执行请求。
intercept(req: HttpRequest<any>, next: HttpHandler) {
return doSomething().concat(next.handle(req));
}
doSomething(){
// returns an observable.
}