multicast
signature: multicast(selector: Function): Observable
multicast(selector: Function): ObservableShare source utilizing the provided Subject.
Examples
Example 1: multicast with standard Subject
( StackBlitz | jsBin | jsFiddle )
// RxJS v6+
import { Subject, interval } from 'rxjs';
import { take, tap, multicast, mapTo } from 'rxjs/operators';
//emit every 2 seconds, take 5
const source = interval(2000).pipe(take(5));
const example = source.pipe(
//since we are multicasting below, side effects will be executed once
tap(() => console.log('Side Effect #1')),
mapTo('Result!')
);
//subscribe subject to source upon connect()
const multi = example.pipe(multicast(() => new Subject()));
/*
subscribers will share source
output:
"Side Effect #1"
"Result!"
"Result!"
...
*/
const subscriberOne = multi.subscribe(val => console.log(val));
const subscriberTwo = multi.subscribe(val => console.log(val));
//subscribe subject to source
multi.connect();Example 2: multicast with ReplaySubject
( StackBlitz | jsBin | jsFiddle )
Additional Resources
multicast 📰 - Official docs
📁 Source Code: https://github.com/ReactiveX/rxjs/blob/master/packages/rxjs/src/internal/operators/multicast.ts
Last updated