switchMap

by pointzerotwo

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/5.4.3/Rx.js"></script>

JavaScript

const _user = new Rx.BehaviorSubject(null);
const _pause = new Rx.BehaviorSubject(true);

const pauseCurrentUser$ = _pause.asObservable().distinctUntilChanged();
const currentUser$ = pauseCurrentUser$.switchMap(paused => paused 
                                                 ? Rx.Observable.never() 
                                                 : _user.asObservable().distinctUntilChanged());

const subscribe = currentUser$.subscribe(val => console.log(val));

_user.next('a')
_user.next('b')
_pause.next(false)
_user.next('c')
_pause.next(true)
_user.next('d')
_pause.next(true)
_pause.next(false)
_user.next('e')