Demo:  partition

The partition operator segregates the data from a given observable into an array of two observables as given by the boolean partition condition.

const [truePart, falsePart] = partition(
                             sourceObservable,
                             (value) => booleanCondition);
let input = from(
              partition(// returns an array
              timer(500,2000).pipe(take(6)),//sourceObservable
              ((v:number) => v%2===0) //partition predicate
              ));

//Collect the items in separate arrays
//and print as we add new items
let process = mergeMap((v:any)=>
          v.pipe(scan((acc,v)=>[...acc,v], [])));

let output=input.pipe(process).subscribe(v=>console.log(v))