RxJS - Multidifusión de operador de multidifusión

Un operador de multidifusión comparte la suscripción única creada con otros suscriptores. Los parámetros que toma la multidifusión son un sujeto o un método de fábrica que devuelve un ConnectableObservable que tiene que conectar () método. Para suscribirse se debe llamar al método connect ().

Sintaxis

multicast(subjectOrSubjectFactory: Subject): OperatorFunction

Parámetros

subjectOrSubjectFactory: el parámetro que se pasa a la multidifusión es un sujeto o método de fábrica que devuelve un sujeto.

Antes de entrar en el funcionamiento de un operador de multidifusión (), primero comprendamos cómo es útil el operador de multidifusión ().

Considere el siguiente ejemplo de un observable simple con suscripción:

Ejemplo

import { Observable } from 'rxjs';

var observable = new Observable(function subscribe(subscriber) {
   try {
      subscriber.next(Math.random());
   } catch (e) {
      subscriber.error(e);
   }
});
const subscribe_one = observable.subscribe(val => console.log(
   "Value from Sub1 = "+val)
);
const subscribe_two = observable.subscribe(val => console.log(
   "Value from Sub2 = "+val)
);

Salida

Si ve la salida, los valores de Sub1 y Sub2 son diferentes. Esto se debe a que cuando se llama al suscriptor, el observable se reinicia y proporciona el nuevo valor disponible. Pero necesitamos que los suscriptores a los que se llama tengan el mismo valor.

Aquí, tenemos el operador de multidifusión () para ayudarnos con eso.

Ejemplo

import { Observable,Subject } from 'rxjs';
import { take, multicast, mapTo } from 'rxjs/operators';

var observable = new Observable(function subscribe(subscriber) {
   try {
      subscriber.next(Math.random());
   } catch (e) {
      subscriber.error(e);
   }
});
const multi_op = observable.pipe(multicast(() => new Subject()));
const subscribe_one = multi_op.subscribe(
   x => console.log("Value from Sub1 = "+x)
);
const subscribe_two = multi_op.subscribe(
   x => console.log("Value from Sub2 = "+x)
);
multi_op.connect();

Si ahora ve, el mismo valor se comparte entre los suscriptores a los que se llama.

Salida