在http请求的末尾执行额外的可观察/承诺

时间:2018-09-06 14:21:27

标签: rxjs angular-http-interceptors rxjs6

我有一个拦截器,当请求从服务器返回时,我需要链接/执行一个promise / observable。如何在rxjs 6中做到这一点?

intercept(): Observable<HttpEvent<any>> {
    return next.handle(request)[DO-SOMETHING]
}

1 个答案:

答案 0 :(得分:3)

如果您需要修改http事件:

return next.handle(request).pipe(
    mergeMap(request => yourPromiseOrObservable));

mergeMap的作用是什么?

  

将每个源值投影到一个Observable,并将其合并到输出Observable中。

And for more help

如果您不需要修改http事件:

return next.handle(request).pipe(
    tap(request => yourPromise.then(_ => ;)));

tap的作用是什么?

  

对源上的每个发射都具有副作用,可观察到,但返回    与来源相同的Observable。

或者,如果您需要等待承诺但不修改请求:

return next.handle(request).pipe(
    delayWhen(request => from(yourPromise)));

delayWhen的作用是什么?

  

将源可观察物的发射延迟给定时间,该时间跨度由另一个可观察物的发射确定。