30 Días con RxJS — Día 08

Si estas leyendo esto, bienvenido al cassette número 8 de 30

Si llegaste aquí y no viste ninguno de los videos anteriores, te recomiendo empezar con el primero:


Este es el día y vamos a ver mas sobre “Subject”!


¿Qué es un Subject?

Un Subject de RxJS es un tipo especial de Observable que permite que los valores sean “multicasted” a muchos observadores. Mientras que los Observables simples son unicast (cada Subject es una ejecución independiente del Observable), los Subject son multicast.

Un Subject es como un observable, pero puede multicastear a muchos Observers. Los Subjects son como EventEmitters: mantienen un registro de muchos listeners.

Todo Subject es un Observable. Dado un Subject, puede suscribirse a él, proporcionando un Observer, el cual comenzará a recibir valores normalmente. Desde la perspectiva del Observer, no puede decir si la ejecución observable proviene de un unicast Observable o un Subject.

Internamente el Subject, “subscribe” no invoca una nueva ejecución que entrega valores. Simplemente registra el Observer dado en una lista de Observers, similarmente a cómo addListener normalmente funciona en otras bibliotecas e idiomas.

Cada Subject es un Observer. Es un objeto con los métodos next(v), error (e), y complete(). Para alimentar un nuevo valor del Subject, simplemente hay que llamar a next(valor), y se enviará a los Observers registrados para escuchar el Subject.

En el siguiente ejemplo, tenemos dos Observers adjuntos a un Subject, y alimentamos algunos valores del Subject:

Dado que un Subject es un Observer, esto también significa que puede proporcionar un Subject como argumento al subscribe de cualquier observable, como en el siguiente ejemplo:

Esencialmente hemos convertido un “unicast” de ejecución observable a “multicast”, a través del Subject. Esto demuestra cómo los Subject son la única manera de hacer que cualquier ejecución observable sea compartida con múltiples Observers.

También hay algunas especializaciones del tipo Subject: BehaviorSubject, ReplaySubject y AsyncSubject.


El código de lo que vimos esta en:

Esto es todo por hoy, tenemos que asentar bien las bases para poder avanzar estables mas adelante!

Te gusto? deja un comentario, contále a tus amigos desarrolladores, seamos un montón en esta aventura de 30 días.


One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.