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))