Есть ли оператор, который позволяет мне сохранить начальное значение из подписки после выполнения ,, switchMap "? - PullRequest
0 голосов
/ 24 июня 2019

Я пытаюсь получить доступ к значению, испускаемому исходным Observable после switchMap, внутри оператора карты.

https://ibb.co/1QB9zZp

Я смотрел на других операторов, но не нашел никакого решения.

1 Ответ

0 голосов
/ 24 июня 2019

Вот оператор для 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])))
        );
    }
}
...