find

Emite únicamente el primer elemento emitido por el Observable fuente que cumpla una condición

💡 Si se quiere obtener el primer elemento emitido, sin que cumpla ninguna operación, se puede usar el operador first

Signatura

Firma

find<T>(predicate: (value: T, index: number, source: Observable<T>) => boolean, thisArg?: any): OperatorFunction<T, T | undefined>

Parámetros

Opcional. El valor por defecto es undefined. Un argumento opcional para determinar el valor del this en la función predicate.

Retorna

OperatorFunction<T, T | undefined>: Un Observable del primer elemento que cumpla la condición.

Descripción

Encuentra el primer valor que cumple una condición y lo emite.

Diagrama de canicas del operador find

find busca el primer elemento del Observable fuente que cumpla la condición especificada en la función predicate y retorna la primera ocurrencia que exista en la fuente. Al contrario que el operador first, la función predicate es obligatoria, y no se emite un error si no se encuentra un valor válido.

Ejemplos

Emite la primera vez que se presiona la tecla X, y se completa el flujo

StackBlitz

import { find } from "rxjs/operators";
import { fromEvent } from "rxjs";

const key$ = fromEvent<KeyboardEvent>(document, "keydown");

key$.pipe(find(({ code }) => code === "KeyX")).subscribe(console.log);
// Salida: KeyboardEvent {}

Emitir el primer lenguaje de tipo Multiparadigma

Aunque haya más de un lenguaje de tipo multiparadigma, find emite únicamente el primero que encuentra.

StackBlitz

Si ningún elemento cumple la condición, se emite undefined

StackBlitz

Ejemplo de la documentación oficial

Encuentra y emite el primer click que ocurra en un elemento DIV

Recursos adicionales

Source code

Documentación oficial en inglés

Last updated