switchMapTo<T, I, R>(innerObservable: any, resultSelector?: (outerValue: T, innerValue: I, outerIndex: number, innerIndex: number) => R): OperatorFunction<T, I | R>
Parámetros
Retorna
OperatorFunction<T, I | R>: Un Observable que emite elementos del innerObservable cada vez que el Observable fuente emite un valor. Se obtienen los valores del Observable interno más reciente.
Descripción
Es como switchMap, pero siempre proyecta los valores sobre el mismo Observable interno.
Proyecta cada emisión de la fuente al Observable innerObservable proporcionado, independientemente del valor de la emisión, y posteriormente 'aplasta' los Observables internos resultantes en un solo Observable, el Observable resultante. El Observable resultante solo emite valores de la instancia más reciente de innerObservable.
Ejemplos
Proyectar cada click al mismo Observable interno, que emite un mensaje
Si antes de que pasen dos segundos se vuelve a hacer click, switchMapTo cancelará la suscripción al Observable interno antiguo y se suscribirá al nuevo. Esto quiere decir que, si no se deja que pasen dos segundos sin hacer ningún click, nunca se verá el mensaje del Observable interno.
import { fromEvent, of } from"rxjs";import { delay, switchMapTo } from"rxjs/operators";constclick$=fromEvent<MouseEvent>(document,"click");constmessage$=of("Hola, has hecho click :D").pipe(delay(2000));click$.pipe(switchMapTo(message$)).subscribe(console.log);// Salida: (click) (2s) 'Hola, has hecho click :D' (click) (1s) (click) (2s) 'Hola, has hecho click :D'...
Cada 3 segundos, obtener los títulos de las 3 primeras películas de Ghibli