Operadores que funcionan con tiempo
- delay: Retrasa la emisión del observable por la cantidad de tiempo pasado como argumento, o hasta la fecha asignada.
delay(1000) -- delay(Date)
- debounceTime: Espera la cantidad pasada como argumento antes de emitir el último valor, si un nuevo valor es emitido antes de que haya transcurrido ese lapso de espera, este se reiniciaria volviendo a esperar el lapso asignado hasta que no haya mas emisiones en ese periodo de tiempo para poder emitir el valor.
- throttleTime: Emite el valor inmediatamente y espera la cantidad de tiempo asignada hasta volver a emitir el siguiente valor, si recibe algun valor durante ese "cooldown" serian ignorados, a menos que se especifique de la siguiente manera.
throttleTime(1000,asyncScheduler, {
leading: true, // Emite el primer valor
trailing: true // Emite el último valor
}),
- sampleTime: Nos permite obtener el último valor emitido dentro de un intervalo de tiempo. Es decir, si especificamos un
sampleTime(1000) si el observable en ese lapso de 1 segundo emitiese 5 valores, al finalizar ese segundo, emitirá el último valor dentro de ese lapso.
- sample: Nos permite obtener una "muestra" de la última emisión de un observable al recibir un valor de otro observable:
// Cada vez que hicieramos click en el documento, recibiriamos la última emisión del observable.
const interval$ = interval(500);
const click$ = fromEvent(document,'click');
interval$.pipe(
sample(click$)
).subscribe(console.log);
- auditTime: Espera la cantidad pasada como argumento antes de emitir el último valor. A diferencia del
debounceTime() este no se reinicia al recibir un nuevo valor, simplemente emitira el último valor al finalizar la cantidad de tiempo asignada. Muy parecido a sampleTime(). La única diferencia con sampleTime()que tiene es que si el observable se completa antes, no se emitiría ningun último valor.