Escrito el 31/03/2024

RxJS Básico: Operadores de Combinación

Operadores que trabajan con varios observables como entrada y devolviendo un nuevo observable.

startWith

Emite el primer valor especificado antes de cualquier otro evento de un obserbable,

of(1,2,3).pipe(
    startWith('a', 'b, 'c')
).subcribe()// a,b,c,1,2,3

merge

combina dos observables para devolver todos los eventos de cualquiera de los observables iniciales

const keys$ = fromEvent(document, "keyup");
const clicks$ = fromEvent(document, "click");

merge(keys$, clicks$).subcribe(); // todos los clicks o keyups

concat

combina dos observables para devolver todos los eventos del primero observable hasta que se complete, luego continua con el siguiente observable hasta completarse

const interval$ = interval(1000);

merge(
    interval$.pipe(take(3)),
    interval$.pipe(take(2))
).subcribe()0,1,2,0,1

combineLatest

Combina los valores emitidos por varios observables y los emite hasta tener un valor de cada observable inicial. Si un observable emitió dos valores antes que el otro, entonces se toma el último valor recibido.

const keys$ = fromEvent(document, "keyup");
const clicks$ = fromEvent(document, "click");

combineLatest(keys$, clicks$).subcribe(); // todos los clicks keyups en pares

forkJoin

Combina los ultimos valores emitidos por varios observables y los emite sólo cuando todos los observables iniciales estén completos.

const numbers$ = of(1, 2, 3);
const letters$ = of("a", "b", "c");

forkJoin(numbers$, letters$).subcribe(); // [3, 'c']