目前我有以下类型的代码:
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) => ...))
))