Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import { merge, Observable, Subject } from 'rxjs';
- import { debounceTime, map } from 'rxjs/operators';
- // Emit `true` on any source emission, then emit `false` after period of inactivity
- const turnOffAfter = (timeout: number) => (source: Observable<any>) => merge(
- source.pipe(map(_ => true)), // map original value to `true`
- source.pipe(debounceTime(timeout), map(_ => false)), // emit `false` after timeout
- );
- // Example usage
- const trackStart: Subject<void> = new Subject<void>();
- const onOff$: Observable<boolean> = trackStart.asObservable()
- .pipe(
- turnOffAfter(3_000),
- );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement