Retorna un ConnectableObservable, que es un Observable que espera a que se haga una llamada a su método `connect` antes de empezar a emitir valores a sus Observadores
💡 publish es equivalente a multicast(() => new Subject())
MonoTypeOperatorFunction<T> | OperatorFunction<T, R>: Un ConnectableObservable que, cuando se hace una llamada a su método connect, hace que el Observable fuente emita valores a sus Observadores.
Descripción
Convierte un Observable frío en un Observable caliente, utilizando el operador multicast junto a un Sujeto internamente.
Retorna un ConnectableObservable, que es un Observable que espera a que se haga una llamada a su método connect antes de empezar a emitir valores a sus Observadores. En el caso de que no se llame a connect, el Observable fuente no emitirá ningún valor.
💡 Para evitar tener que llamar a connect manualmente, se puede utilizar el operador refCount.
import { ConnectableObservable, interval, timer } from"rxjs";import { publish, tap, take } from"rxjs/operators";// number$ no empezará a emitir valores hasta que se haga una llamada a connectconstnumber$=interval(1000).pipe(take(4));constmulticasted$=number$.pipe(tap(() =>console.log("Fuente compartida, efecto secundario se ejecuta una sola vez") ),publish()) asConnectableObservable<number>;// Llamando a connect tras 3 secondstimer(3000).pipe(tap(() =>multicasted$.connect())).subscribe();multicasted$.subscribe((val) =>console.log(`Observador 1: ${val}`));multicasted$.subscribe((val) =>console.log(`Observador 2: ${val}`));/* Salida:Fuente compartida, efecto secundario se ejecuta una sola vez,Observador 1: 0,Observador 2: 0,(1s)Fuente compartida, efecto secundario se ejecuta una sola vez,Observador 1: 1,Observador 2: 1,...*/
Ejemplos de la documentación oficial
Convertir al Observable fuente en caliente, unir cada Observable interno en uno solo y suscribirse al Observable resultante