import { Subject, BehaviorSubject, Observable } from 'rxjs';import { switchMap } from 'rxjs/operators';// Een Subject om nieuwe subscribers te registrerenconst subscriberSubject = new Subject<Observable<any>>();// Een BehaviorSubject om de laatste Observable te houdenconst lastObservableSubject = new BehaviorSubject<Observable<any>>(null);// Subscribe op de subject die nieuwe subscribers registreertsubscriberSubject.pipe(switchMap(obs => {// Zodra er een nieuwe subscriber komt, update de laatste ObservablelastObservableSubject.next(obs);// Return de Observable voor deze subscriberreturn obs;})).subscribe();// Functie om een nieuwe Observable te registrerenfunction registerObservable(obs: Observable<any>) {subscriberSubject.next(obs);}// Externe Observable die verandertlet externalObservable = new Observable<number>(observer => {let count = 0;const interval = setInterval(() => {observer.next(count++);if (count > 5) {clearInterval(interval);observer.complete();}}, 1000);});// Voorbeeld van het gebruik:registerObservable(externalObservable);// Simuleer 3 subscriptions die op verschillende tijden worden gedaanconst subscription1 = lastObservableSubject.subscribe(value => {console.log("Subscriber 1 received:", value);});const subscription2 = lastObservableSubject.subscribe(value => {console.log("Subscriber 2 received:", value);});const subscription3 = lastObservableSubject.subscribe(value => {console.log("Subscriber 3 received:", value);});// Simuleer dat 'subscriber 3' na 3 seconden unsubscribed wordtsetTimeout(() => {console.log("Unsubscribing 'Subscriber 3'...");subscription3.unsubscribe();}, 3000);
830600cookie-checkRXJS Nested subscribers with the last subscriber active