switchMapTo
Proyecta cada valor de la fuente al mismo Observable interno, posteriormente usando switchMap para unirlos al Observable resultante
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";
const click$ = fromEvent<MouseEvent>(document, "click");
const message$ = 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
Ejemplo de la documentación oficial
Reinicia un Observable intervalo con cada click
import { fromEvent, interval } from "rxjs";
import { switchMapTo } from "rxjs/operators";
const clicks = fromEvent(document, "click");
const result = clicks.pipe(switchMapTo(interval(1000)));
result.subscribe((x) => console.log(x));
Recursos adicionales
Last updated