在不等待内部可观察的情况下发射可观察的结果映射



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

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完成后再次发出。有没有办法用上述方法做到这一点?或者我必须将其重构为单独的Observable?

您只需将switchMap()merge()重写为第一个结果,使其在this.serviceA.fetch发出之前立即发出。

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

最新更新