首页 > 解决方案 > 发出 observable 结果图而不等待内部 observable

问题描述

目前我有以下类型的代码:

 obsC$: Observable<Result[T][]> = combineLatest([this.obsA$, this.obsB$]).
 pipe(map(([resultA, resultB]) => ...),
 switchMap(this.serviceA.fetch(resultA).pipe(map((resultD) => ...)))
 )

这导致 obsC$ 不得不等待this.serviceA.fetch的结果,我不想这样做,因为它可能需要一些时间。相反,我想在 switchMap 之前发出一次结果,然后在 switchMap 完成后再次发出。有没有办法用上面提到的方式做到这一点?还是我必须将其重构为单独的 Observables?

标签: angularjsrxjsobservable

解决方案


您可以重写您的switchMap()merge()第一个结果,以便它在发出之前立即this.serviceA.fetch发出。

switchMap(resultA => merge(
  of(resultA),
  this.serviceA.fetch(resultA).pipe(map((resultD) => ...))
))

推荐阅读