sample
Emite la emisión más reciente del Observable fuente cuando un segundo Observable, el notificador, emite un valor
Descripción
Es como sampleTime
, pero toma una muestra del Observable fuente cuando el Observable notificador emite un valor.
Cuando el Observable notifier
emite un valor o se completa, sample
toma una muestra del Observable fuente y emite la emisión más reciente desde el último muestreo, a no ser que la fuente no haya emitido nada desde el último muestreo. En cuanto se lleve a cabo la suscripción al Observable resultante, también se realizará la del Observable notifier
.
Ejemplos
Emitir el valor más reciente desde el último muestreo, realizado cuando interval emite (cada 2s)
import { interval } from "rxjs";
import { sample } from "rxjs/operators";
const number$ = interval(1000);
number$.pipe(sample(interval(2000))).subscribe(console.log);
// Salida: 1, 3, 5, 7, 9...
Emitir el valor más reciente desde el último muestreo, realizado cada vez que se pulsa una tecla
import { fromEvent, interval } from "rxjs";
import { sample } from "rxjs/operators";
const number$ = interval(1000);
const key$ = fromEvent<KeyboardEvent>(document, "keydown");
number$
.pipe(sample(key$))
.subscribe((n) =>
console.log(`El último valor emitido tras la última tecla pulsada es: ${n}`)
);
// Salida: El último valor emitido tras la última tecla pulsada es: n
Ejemplo de la documentación oficial
Con cada click, realizar un muestreo del temporizador seconds
import { fromEvent, interval } from "rxjs";
import { sample } from "rxjs/operators";
const seconds = interval(1000);
const clicks = fromEvent(document, "click");
const result = seconds.pipe(sample(clicks));
result.subscribe((x) => console.log(x));
Recursos adicionales
Last updated