Skip to content

Instantly share code, notes, and snippets.

@kosich
Last active April 26, 2019 09:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kosich/4d14270613c5bdb8a60ac414945b29f2 to your computer and use it in GitHub Desktop.
Save kosich/4d14270613c5bdb8a60ac414945b29f2 to your computer and use it in GitHub Desktop.
Cancel a delay if same observable emits
const { rxObserver } = require('api/v0.3');
const { Subject, of } = require('rxjs');
const { switchMap, delay } = require('rxjs/operators');
const subject = new Subject(0);
const result$ = subject
.pipe(
switchMap(value =>
// switchMap to a delayed value
of(value).pipe(delay(50))
)
);
subject.subscribe(rxObserver('source'));
result$.subscribe(rxObserver('result$'));
subject.next(0); // immediately emit 0
setTimeout(()=>{
subject.next(1); // emit 1 in 100 ms
}, 100);
setTimeout(()=>{
subject.next(2); // emit 2 in 120 ms
}, 120);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment