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