Documentación RxJS

last

Emite el último valor (o el último valor que cumpla una condición) del el Observable fuente

Signatura

Firma

last<T, D>(predicate?: (value: T, index: number, source: Observable<T>) => boolean, defaultValue?: D): OperatorFunction<T, T | D>

Parámetros

predicateOpcional. El valor por defecto es undefined. La condición que el elemento emitido por la fuente debe cumplir.
defaultValueOpcional. El valor por defecto es undefined. El valor por defecto opcional que se emitirá en el caso de que ningún elemento cumpla la condición o si no se emite ningún valor.

Retorna

OperatorFunction<T, T | D>: Un Observable que emite el último elemento del Observable que cumpla la condición, o un NoSuchElementException si no se emite ningún elemento.

Lanza

EmptyError Propaga un EmptyError a la callback de error del Observable si este se completa antes de emitir alguna notificación next.

Error - Se lanza en el caso de que ningún elemento cumple la condición especificada por el Observable fuente.

Descripción

Retorna un Observable que emite el último elemento emitido por el Observable fuente. Opcionalmente recibe una función predicate como parámetro, en cuyo caso, en lugar de emitir el último elemento del Observable fuente, el Observable resultante emitirá el último elemento del Observable fuente que cumpla la condición especificada.

Diagrama de canicas del operador last

Ejemplos

Emitir la última cadena de una secuencia

StackBlitz

import { last } from "rxjs/operators";
import { from, fromEvent } from "rxjs";

const fruit$ = from(["Cereza", "Fresa", "Arándano"]);

fruit$.pipe(last()).subscribe(console.log);
// Salida: Arándano

Emitir el último elemento que cumpla una condición

StackBlitz

import { of } from "rxjs";
import { last } from "rxjs/operators";

const user$ = of(
  { name: "NyaGarcía", age: 23 },
  { name: "zaldih", age: 21 },
  { name: "caballerog", age: 35 },
  { name: "carla.1003", age: 21 }
);

user$.pipe(last(({ age }) => age === 21)).subscribe(console.log);
// Salida: { name: 'carla.1003', age: 21 }

Proporcionar un valor por defecto, que será emitido si ningún elemento cumple la condición

StackBlitz

import { last } from "rxjs/operators";
import { from } from "rxjs";

const language$ = from([
  { name: "Haskell", type: "Funcional" },
  { name: "Ruby", type: "Multiparadigma" },
  { name: "Rust", type: "Multiparadigma" },
]);

language$
  .pipe(
    last(({ type }) => type === "Orientado a objetos", {
      name: "Java",
      type: "Orientado a objetos",
    })
  )
  .subscribe(console.log);
// Salida: { name: "Java", type: "Orientado a objetos" }
Sobrecargas

Firma

last(predicate?: null, defaultValue?: D): OperatorFunction<T, T | D>

Parámetros

predicateOpcional. El valor por defecto es undefined. Tipo: null.
defaultValueOpcional. El valor por defecto es undefined. Tipo: D.

Retorna

OperatorFunction<T, T | D>

Firma

last(predicate: (value: T, index: number, source: Observable<T>) => value is S, defaultValue?: S): OperatorFunction<T, S>

Parámetros

predicateTipo: (value: T, index: number, source: Observable) => value is S.
defaultValueOpcional. El valor por defecto es undefined. Tipo: S.

Retorna

OperatorFunction<T, S>

Firma

last(predicate: (value: T, index: number, source: Observable<T>) => boolean, defaultValue?: D): OperatorFunction<T, T | D>

Parámetros

predicateTipo: (value: T, index: number, source: Observable) => boolean.
defaultValueOpcional. El valor por defecto es undefined. Tipo: D.

Retorna

OperatorFunction<T, T | D>

Recursos adicionales

Source code

Documentación oficial en inglés