Son operadores para fucionar a partir de uno o más observables.
.
merge
→ Combina los valores de múltiples observables con un solo resultado observable. Será removido en RxJS v8 por mergeWith
.
const onClick1$ = fromEvent(document, "click").pipe(
map(event => event.type) // "click"
);
const onMouseMove$ = fromEvent(document, "mousemove").pipe(
map(event => event.type) // "mousemove"
);
const eventMergeWith$ = onMouseMove$.pipe(
mergeWith(onClick1$)
);
eventMergeWith$.subscribe((value) => {
console.log("obs: ", value)
});
mergeAll
→ Convierte un observable de orden superior en un observable de primer orden que entrega simultáneamente todos los valores que se emiten en los observables internos.
.
Observable de orden superior: Observable que emite otros observables.
const onClick2$ = fromEvent(document, "click");
const ordenSuperior$ = onClick2$.pipe(
map(() => interval(1000))
);
const primerOrden$ = ordenSuperior$.pipe(
mergeAll()
);
primerOrden$.subscribe(console.log);
mergeMap
→ Proyecta cada valor de fuente a un observable que se fusiona en la salida del observable. Es una mezcla entre mapear un observador y luego mezclar todos los valores que han sido emitidos.
const letters$ = from(["A", "B", "C"]);
const result$ = letters$.pipe(
// Anidando el observable letters$ con el observable interval.
mergeMap(letter => interval(1000).pipe(
// Anida una letra por cada segundo
map(
second => letter + second
)
))
);
result$.subscribe(console.log);
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?