withLatestFrom
Combina el Observable fuente con otros Observables para crear un Observable cuyas emisiones se calculan a partir de los valores más recientes de cada uno, cada vez que la fuente emite
Descripción
Cuando el Observable fuente emite un valor, combina dicho valor con las emisiones más recientes de los demás Observables, y emite el resultado de dicha combinación.
withLatestFrom
combina cada valor del Observable fuente (la instancia) con los valores más recientes de los demás Observables cada vez que la fuente emite un valor. Opcionalmente, se puede utilizar una función de proyección para determinar el valor que se emite en el Observable resultante. Todos los Observables input deben emitir al menos un valor para que el Observable resultante pueda emitir.
Ejemplos
Combinar cada tecla pulsada con un Observable intervalo, para saber en qué momento se pulsa cada tecla
import { fromEvent, interval } from "rxjs";
import { withLatestFrom, map } from "rxjs/operators";
const key$ =
fromEvent <
KeyboardEvent >
(document, "keydown").pipe(map(({ code }) => code));
const number$ = interval(1000);
key$
.pipe(
withLatestFrom(number$),
map(([code, time]) => `Tecla ${code} pulsada a los ${time} segundos`)
)
.subscribe((x) => console.log(x));
// Salida: (2s) Tecla KeyR pulsada a los 2 segundos (1s) Tecla KeyX pulsada a los 3 segundos...
Ejemplo de la documentación oficial
Emitir un array con el temporizador más reciente más el evento click, en cada click
import { fromEvent, interval } from "rxjs";
import { withLatestFrom } from "rxjs/operators";
const clicks = fromEvent(document, "click");
const timer = interval(1000);
const result = clicks.pipe(withLatestFrom(timer));
result.subscribe((x) => console.log(x));
Recursos adicionales
Last updated