JSFiddle - React, Tailwind, and code Playground

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/6.6.3/rxjs.umd.min.js"></script>

JavaScript

const { of, operators, merge } = rxjs;
const { map, filter, takeLast } = operators;

const divisibleNum = { num: 24 };
const divisible$ = of(divisibleNum);

const divisibleBy2$ = divisible$
	.pipe(
  	filter((data) => {
    	return data.num % 2 === 0;
    }),
    map((data) => {
    	return {
      	...data,
        from: 2
      }
    })
  );
  
divisibleBy2$
	.subscribe(() => {
  	console.log("Divisible by 2");
  });
  
 const divisibleBy4and2$ = divisibleBy2$
	.pipe(
  	filter((data) => {
    	return data.num % 4 === 0;
    }),
    map((data) => {
    	return {
      	...data,
        from: 4
      }
    })
  );
  
divisibleBy4and2$
	.subscribe(() => {
  	console.log("Divisible by 4 and 2");
  });
  
const divisibleBy6And4And2$ = divisibleBy4and2$
	.pipe(
  	filter((data) => {
    	return data.num % 6 === 0;
    }),
    map((data) => {
    	return {
      	...data,
        from: 6
      }
    })
  );
  
divisibleBy6And4And2$
	.subscribe(() => {
  	console.log("Divisible by 6, 4, and 2");
  });

// Since multiple divisible observables will trigger, and the
// last observable in the merge array is what gets triggered
// after all the prior observable in the list have triggered,
// get the last return.
merge(divisibleBy2$, divisibleBy4and2$, divisibleBy6And4And2$)
	.pipe(
      takeLast(1)
    )
	.subscribe((data) => {
  	console.log("Divisible from divisible factor", data.from, "and below");
  });