mergeMapTo
Proyecta cada valor emitido por la fuente al mismo Observable, que se fusiona con el Observable resultante
Descripción
Es como mergeMap
, pero siempre proyecta los valores al mismo Observable interno.
Proyecta cada emisión de la fuente al Observable innerObservable
dado, independientemente del valor de dicha emisión, y fusiona los Observables internos resultantes en un solo Observable: el Observable resultante.
Ejemplos
Proyectar cada click al mismo Observable interno, que emite un mensaje
import { fromEvent, of } from "rxjs";
import { mergeMapTo } from "rxjs/operators";
const click$ = fromEvent<MouseEvent>(document, "click");
click$.pipe(mergeMapTo(of("Hola, has hecho click :D"))).subscribe(console.log);
// Salida: (click) 'Hola, has hecho click :D' (click) 'Hola, has hecho click :D'...
Cada 3 segundos, obtener los títulos de las 3 primeras películas de Ghibli
import { mergeMapTo, map, mergeAll, take } from "rxjs/operators";
import { interval } from "rxjs";
import { ajax } from "rxjs/ajax";
const second$ = interval(3000).pipe(take(5));
function getGhibliFilmTitles() {
return ajax.getJSON(`https://ghibliapi.herokuapp.com/films/`).pipe(
mergeAll(),
map(({ title }) => title),
take(3)
);
}
second$.pipe(mergeMapTo(getGhibliFilmTitles())).subscribe(console.log);
// Salida: (3s) Castle in the Sky, Grave of the Fireflies, My Neighbor Totoro (3s) Castle in the Sky, Grave of the Fireflies, My Neighbor Totoro...
Ejemplo de la documentación oficial
Por cada evento click, empezar un intervalo Observable de 1 segundo
import { fromEvent, interval } from "rxjs";
import { mergeMapTo } from "rxjs/operators";
const clicks = fromEvent(document, "click");
const result = clicks.pipe(mergeMapTo(interval(1000)));
result.subscribe((x) => console.log(x));
Recursos adicionales
Last updated