是否有一个运算符可让我在执行“ switchMap”之后保留预订的初始值?

时间:2019-06-24 16:48:08

标签: rxjs ngrx ngrx-effects

我尝试在map运算符内部访问switchMap之后由初始Observable发出的值。

https://ibb.co/1QB9zZp

我看过其他操作员,但没有找到任何解决方案。

1 个答案:

答案 0 :(得分:0)

这里是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])))
        );
    }
}