¿RxJS Observable elimina un elemento después de emitirlo (a Observer )?
Uno de los aspectos difíciles de RxJS a tener en cuenta es tener en cuenta el tiempo. Por defecto, cuando un observable emite un valor, un observador existente recibirá ese valor. Si un observador se suscribe a un observable después de haber emitido un valor, no lo recibirá porque era un suscriptor "tardío".
Además, por defecto, un observable solo puede tener un suscriptor. Si desea tener múltiples suscriptores a un observable, debe usar el operador share() . Los sujetos (y sus subclases) pueden compartir con varios suscriptores de forma predeterminada. Incluso entonces, debe tener en cuenta el tiempo. Debe considerar cuándo la fuente observable emite un valor y cuándo todos los observadores están suscritos activamente para recibir ese valor.
Por último, también puede almacenar en caché los valores emitidos, lo que significa que cualquier suscriptor tardío seguirá recibiendo esos valores al momento de la suscripción. Con los observables, puede usar shareReplay(n) donde n es la cantidad de valores que desea reproducir para los suscriptores nuevos.
BehaviorSubject s funciona de manera similar en el sentido de que, de forma predeterminada, emitirá su último valor único a cualquier observador en el momento en que se suscriba. ReplaySubject también hace esto donde puede pasar n número de valores emitidos.