RxJS - Multicasting Operator multicast

Un operatore multicast condivide il singolo abbonamento creato con altri abbonati. Il parametro che multicast accetta è un oggetto o un metodo di fabbrica che restituisce un metodo ConnectableObservable che deve connect (). Per iscriversi, è necessario chiamare il metodo connect ().

Sintassi

multicast(subjectOrSubjectFactory: Subject): OperatorFunction

Params

subjectOrSubjectFactory: il parametro passato a multicast è un subject o un metodo factory che restituisce un subject.

Prima di entrare nel funzionamento di un operatore multicast (), dobbiamo prima capire come è utile l'operatore multicast ().

Considera il seguente esempio di un semplice osservabile con abbonamento:

Esempio

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)
);

Produzione

Se vedi l'output, i valori per Sub1 e Sub2 sono diversi. Questo perché quando l'abbonato viene chiamato l'osservabile si riavvia e fornisce il nuovo valore disponibile. Ma abbiamo bisogno che gli abbonati vengano chiamati per avere lo stesso valore.

Qui, abbiamo l'operatore multicast () per aiutarci con esso.

Esempio

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();

Se ora vedi lo stesso valore è condiviso tra gli iscritti che vengono chiamati.

Produzione