No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Aprende Ingl茅s, Programaci贸n, AI, Ciberseguridad y m谩s a precio especial.

Antes: $249

Currency
$209
Suscr铆bete

Termina en:

2 D铆as
3 Hrs
25 Min
13 Seg

Operadores: mergeAll, mergeMap

21/36
Recursos

Aportes 4

Preguntas 0

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

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);
Un buen ejemplo es el de un Observable creado a trav茅s del operador creacional 芦of禄 y ese Observable se mapea a la creaci贸n de Observables 芦Interval禄 y dichos Observables imprimen el valor que los creo (qu茅 lo pueden ver como un 铆ndice) y el nuevo valor emitido por 茅l. Despu茅s se crea otro Observable que unificar谩 las emisiones de todos los Observables internos del Observable de orden superior (Observable que emite Observables) y se suscribe para imprimir los valores. Nota: 芦randomMs禄 env铆a un n煤mero variable para establecerlo como el espacio de tiempo entre los valores emitidos por cada Observable contenido en el Observable de orden superior (higherOrder$). Opte por prescindir de los imports. ```js const source$ = of(1, 2, 3); // Funci贸n para generar un tiempo aleatorio: const randomMs = () => Math.round(Math.random() * 2000); const higherOrder$ = source$.pipe( map((n) => // Se generan los nuevos Observables: interval(randomMs()).pipe(map((value) => `${n}.- ${value}`)) ) ); const lowerOrder$ = higherOrder$.pipe(mergeAll()); lowerOrder$.subscribe(console.log); ```

mergeWith

mergeAll