Advertisement
Guest User

Untitled

a guest
Sep 17th, 2019
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.60 KB | None | 0 0
  1. import { merge, Observable, Subject } from 'rxjs';
  2. import { debounceTime, map } from 'rxjs/operators';
  3.  
  4. // Emit `true` on any source emission, then emit `false` after period of inactivity
  5. const turnOffAfter = (timeout: number) => (source: Observable<any>) => merge(
  6. source.pipe(map(_ => true)), // map original value to `true`
  7. source.pipe(debounceTime(timeout), map(_ => false)), // emit `false` after timeout
  8. );
  9.  
  10. // Example usage
  11. const trackStart: Subject<void> = new Subject<void>();
  12. const onOff$: Observable<boolean> = trackStart.asObservable()
  13. .pipe(
  14. turnOffAfter(3_000),
  15. );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement