| import { switchMap } from './switchMap'; |
| import { ObservableInput, OperatorFunction, ObservedValueOf } from '../types'; |
| import { isFunction } from '../util/isFunction'; |
| |
| /** @deprecated Will be removed in v9. Use {@link switchMap} instead: `switchMap(() => result)` */ |
| export function switchMapTo<O extends ObservableInput<unknown>>(observable: O): OperatorFunction<unknown, ObservedValueOf<O>>; |
| /** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */ |
| export function switchMapTo<O extends ObservableInput<unknown>>( |
| observable: O, |
| resultSelector: undefined |
| ): OperatorFunction<unknown, ObservedValueOf<O>>; |
| /** @deprecated The `resultSelector` parameter will be removed in v8. Use an inner `map` instead. Details: https://rxjs.dev/deprecations/resultSelector */ |
| export function switchMapTo<T, R, O extends ObservableInput<unknown>>( |
| observable: O, |
| resultSelector: (outerValue: T, innerValue: ObservedValueOf<O>, outerIndex: number, innerIndex: number) => R |
| ): OperatorFunction<T, R>; |
| |
| /** |
| * Projects each source value to the same Observable which is flattened multiple |
| * times with {@link switchMap} in the output Observable. |
| * |
| * <span class="informal">It's like {@link switchMap}, but maps each value |
| * always to the same inner Observable.</span> |
| * |
| *  |
| * |
| * Maps each source value to the given Observable `innerObservable` regardless |
| * of the source value, and then flattens those resulting Observables into one |
| * single Observable, which is the output Observable. The output Observables |
| * emits values only from the most recently emitted instance of |
| * `innerObservable`. |
| * |
| * ## Example |
| * |
| * Restart an interval Observable on every click event |
| * |
| * ```ts |
| * import { fromEvent, switchMapTo, interval } from 'rxjs'; |
| * |
| * const clicks = fromEvent(document, 'click'); |
| * const result = clicks.pipe(switchMapTo(interval(1000))); |
| * result.subscribe(x => console.log(x)); |
| * ``` |
| * |
| * @see {@link concatMapTo} |
| * @see {@link switchAll} |
| * @see {@link switchMap} |
| * @see {@link mergeMapTo} |
| * |
| * @param {ObservableInput} innerObservable An Observable to replace each value from |
| * the source Observable. |
| * @return A function that returns an Observable that emits items from the |
| * given `innerObservable` (and optionally transformed through the deprecated |
| * `resultSelector`) every time a value is emitted on the source Observable, |
| * and taking only the values from the most recently projected inner |
| * Observable. |
| * @deprecated Will be removed in v9. Use {@link switchMap} instead: `switchMap(() => result)` |
| */ |
| export function switchMapTo<T, R, O extends ObservableInput<unknown>>( |
| innerObservable: O, |
| resultSelector?: (outerValue: T, innerValue: ObservedValueOf<O>, outerIndex: number, innerIndex: number) => R |
| ): OperatorFunction<T, ObservedValueOf<O> | R> { |
| return isFunction(resultSelector) ? switchMap(() => innerObservable, resultSelector) : switchMap(() => innerObservable); |
| } |