connect
Crea un Observable al multidifundir el Observable fuente dentro de una función que permite al desarrollador definir el uso del multicast tras la conexión
Descripción
Este operador es especialmente útil si el Observable fuente que se quiere multidifundir es síncrono o asíncrono. Ahí radica la diferencia con el operador share, que, en el caso de las fuentes totalmente síncronas, fallará al intentar compartir una sola suscripción con varios consumidores, ya que para el momento en el que la suscripción al resultado de share haya retornado, si la fuente es síncrona en su referencia interna, el recuento de referencias saltará de 0 a 1, de vuelta a 0 y se reiniciará.
Para utilizar connect
, hay que proporcionar una función selector
que nos dará un Observable multidifundido (que todavía no ha sido conectado). Entonces, se utiliza ese Observable multidifundido para crear un Observable resultante que, al suscribirnos a él, se encargará de configurar el multicast. Esto se suele conseguir, aunque no siempre, con merge.
Téngase en cuenta que el utilizar el operador takeUntil dentro del selector
de connect
, puede ser síntoma de que en realidad haya que utilizar el operador takeWhile.
Cuando se lleva a cabo la suscripción al resultado de connect
, la función selector
será llamada. Cuando la función selector
retorne, el Observable que retorne será suscrito, y entonces será cuando el multicast se conectará a la fuente.
Ejemplo
Compartiendo un Observable completamente síncrono
Last updated