single

Emite si solo existe un único valor que cumpla la condición

chevron-rightSignaturahashtag

Firma

single<T>(predicate?: (value: T, index: number, source: Observable<T>) => boolean): MonoTypeOperatorFunction<T>

Parámetros

Retorna

MonoTypeOperatorFunction<T>: Un Observable que puede emitir un único valor del Observable fuente que cumpla la condición, o undefined si ninguno la cumple.

Lamza

EmptyError Lanza un EmptyError si el Observable se completa sin emitir ninguna notificación next.

Descripción

Es como first, pero emite un error si hay más de un valor.

Diagrama de canicas del operador single

Retorna un Observable que emite el único valor emitido por el Observable fuente que cumpla la condición especificada, en el caso de que exista dicho valor. Si el Observable fuente emite más de un elemento que cumpla la condición, o no emite ningún elemento, se lanzarán un IllegalArgumentException o un NoSuchElementException respectivamente.

Si el Observable fuente emite elementos, pero ninguno cumple la condición especificada, se emitirá undefined.

Ejemplos

Emitir el único elemento que cumpla la condición

StackBlitzarrow-up-right

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

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

language$
  .pipe(single(({ type }) => type === "Multiparadigma"))
  .subscribe(console.log);
// Salida: { name: "Ruby", type: "Multiparadigma" }

Si hay más de un elemento que cumpla la condición, se lanzará un error

StackBlitzarrow-up-right

Si no hay ningún elemento que cumpla la condición, se emitirá undefined

StackBlitzarrow-up-right

Ejemplos de la documentación oficial

Emitir 'Error'

Emitir 'undefined'

Recursos adicionales

Source codearrow-up-right

Documentación oficial en inglésarrow-up-right

Last updated