首页 > 解决方案 > 是否有一个运算符可以让我在执行 ,, switchMap" 后保留订阅的初始值?

问题描述

我尝试在 map 操作符内访问 switchMap 之后初始 Observable 发出的值。

https://ibb.co/1QB9zZp

我看过其他运营商,但我没有找到任何解决方案。

标签: rxjsngrxngrx-effects

解决方案


这是 RxJS 的一个操作符,它会将外部值和内部值作为数组对发出[outer, inner]

这是一个switchMap()变体。

export function withSwitchMap<T, R>(inner: (T) => Observable<R>): OperatorFunction<T, [T, R]> {
    return (source: Observable<T>): Observable<[T, R]> => {
        return source.pipe(
            switchMap(a => inner(a).pipe(map(b => [a, b] as [T, R])))
        );
    }
}

这是一个mergeMap()变体。

export function withMergeMap<T, R>(inner: (T) => Observable<R>): OperatorFunction<T, [T, R]> {
    return (source: Observable<T>): Observable<[T, R]> => {
        return source.pipe(
            mergeMap(a => inner(a).pipe(map(b => [a, b] as [T, R])))
        );
    }
}

推荐阅读