reactiva que programacion ejemplo rxjs

rxjs - que - Crea una suscripción única



rxjs angular (3)

Necesito crear una suscripción a un Observable que se Observable inmediato cuando se llame por primera vez.

¿Hay algo como:

observable.subscribeOnce(func);

Mi caso de uso, estoy creando una suscripción en un controlador de ruta rápida y la suscripción se llama varias veces por solicitud.


No estoy 100% seguro de lo que necesita, pero si solo desea observar el primer valor, use first() o take(1) :

observable.first().subscribe(func);

nota: .take(1) y .take(1) automáticamente cuando se cumple su condición

Actualización de RxJS 5.5+

Del comentario de Coderer .

import { first } from ''rxjs/operators'' observable .pipe(first()) .subscribe(func);

Este es el por qué


Para complementar la respuesta de @ Brandon , usar first() o similar también es esencial para actualizar un BehaviorSubject basado en su Observable . Por ejemplo (no probado):

var subject = new BehaviorSubject({1:''apple'',2:''banana''}); var observable = subject.asObservable(); observable .pipe( first(), // <-- Ensures no flatMap(function(obj) { obj[3] = ''pear''; return of(obj); }) ) .subscribe(function(obj) { subject.next(obj); });


RxJS tiene la mejor documentación que he encontrado. Seguir el siguiente enlace lo llevará a casos de uso de mapeo de tablas extremadamente útiles para los operadores. Por ejemplo, bajo el caso de uso "Quiero tomar el primer valor" hay tres operadores: first , first o firstOrDefault y sample .

Tenga en cuenta que si una secuencia observable se completa sin notificaciones, entonces el first operador notifica a los suscriptores con un error, mientras que el operador firstOrDefault proporciona un valor predeterminado a los suscriptores.

búsqueda de casos de uso del operador