我有一个拦截器,当请求从服务器返回时,我需要链接/执行一个promise / observable。如何在rxjs 6中做到这一点?
intercept(): Observable<HttpEvent<any>> {
return next.handle(request)[DO-SOMETHING]
}
答案 0 :(得分:3)
如果您需要修改http事件:
return next.handle(request).pipe(
mergeMap(request => yourPromiseOrObservable));
mergeMap
的作用是什么?
将每个源值投影到一个Observable,并将其合并到输出Observable中。
如果您不需要修改http事件:
return next.handle(request).pipe(
tap(request => yourPromise.then(_ => ;)));
tap
的作用是什么?
对源上的每个发射都具有副作用,可观察到,但返回 与来源相同的Observable。
或者,如果您需要等待承诺但不修改请求:
return next.handle(request).pipe(
delayWhen(request => from(yourPromise)));
delayWhen
的作用是什么?
将源可观察物的发射延迟给定时间,该时间跨度由另一个可观察物的发射确定。