Demo: takeUntil
takeUntil emits the incoming values until the inner observable emits a value.
takeUntil(innerObservable)
//Emit upto 5 items; every 1 sec, starting at 0.5sec
let input = timer(500,1000).pipe(take(5));
//take the incoming items for first 3 sec
let process = takeUntil(interval(3000));
let output = input.pipe(process).subscribe(v=>console.log(v))