Warunkowe przerwanie emisji danych w RxJS na przykładzie timera

import { timer } from 'rxjs';
const source = timer(0, 1000);
//output: 0,1,2,3,4,5......
const subscribe = source.subscribe(val => console.log(val));
Aby warunkowo przerwać działanie powyższego timera można użyć takeUntil lub takeWhile. Poniżej przykład zastosowania takeUntil:
import { timer } from 'rxjs';
const source = timer(0, 1000).pipe(takeWhile(i => i < 4);
//output: 0,1,2,3
const subscribe = source.subscribe(val => console.log(val));