import { interval } from "rxjs/observable/interval"; import { filter } from "rxjs/operator/filter"; import { take } from "rxjs/operator/take"; import { map } from "rxjs/operator/map"; import { throttle } from "rxjs/operator/throttle"; import { takeUntil } from "rxjs/operator/takeUntil"; function test(observable) { return observable ::filter((data) => data.someTest) ::throttle(() => interval(10) ::take(1) ::takeUntil(observable::filter((data) => someOtherTest)), ) ::map(someFunction); }