takeLast
Emite las últimas x emisiones del Observable fuente
Descripción
Almacena los últimos count
valores, y los emite cuando el Observable fuente se completa.
takeLast
retorna un Observable que emite los últimos count
valores emitidos por el Observable fuente. Si la fuente emite menos de count
valores, se emitirán todos. Este operador debe esperar a que el Observable fuente se complete para poder emitir los últimos count
valores en el Observable resultante, ya que, de lo contrario, es imposible saber si el Observable fuente emitirá o no más valores. Por esta razón, todos los valores se emiten de forma síncrona, seguidos de la notificación complete
.
Ejemplos
Emitir el último valor de un Observable
import { takeLast } from "rxjs/operators";
import { from } from "rxjs";
const language$ = from([
{ name: "Java", type: "Orientado a objetos" },
{ name: "Scala", type: "Multiparadigma" },
{ name: "Haskell", type: "Funcional" },
]);
language$.pipe(takeLast(1)).subscribe(console.log);
// Salida: { name: "Haskell", type: "Funcional" }
Si el Observable fuente emite más de count valores, se emitirán todos
import { takeLast } from "rxjs/operators";
import { range } from "rxjs";
const range$ = range(0, 5);
range$
.pipe(takeLast(10))
.subscribe(console.log, console.error, () => console.log("Completado"));
// Salida: 0, 1, 2, 3, 4
Si el Observable fuente no se completa, no se emitirá ningún valor
import { takeLast } from "rxjs/operators";
import { interval } from "rxjs";
const number$ = interval(1000);
number$
.pipe(takeLast(5))
.subscribe(console.log, console.error, () => console.log("Complete"));
// Salida:
Ejemplo de la documentación oficial
Emite los últimos 3 valores de un Observable
import { range } from "rxjs";
import { takeLast } from "rxjs/operators";
const many = range(1, 100);
const lastThree = many.pipe(takeLast(3));
lastThree.subscribe((x) => console.log(x));
Recursos adicionales
Last updated