Skip to content

Instantly share code, notes, and snippets.

@bangedorrunt
Last active May 22, 2016 12:55
Show Gist options
  • Save bangedorrunt/c0fb830ae0b645c903f1 to your computer and use it in GitHub Desktop.
Save bangedorrunt/c0fb830ae0b645c903f1 to your computer and use it in GitHub Desktop.
RxJS tips
let everythingIsDone = Rx.Observable.fromEvent(em, ‘everythingIsDone’);
let eventSource = Rx.Observable.fromEvent(em, ‘event’).takeUntil(everythingIsDone).toArray().toPromise();
// Could be done with simple solution using `lodash#intersection` method
Rx.Observable.merge(
Rx.Observable.range(0, 10),
Rx.Observable.range(11, 20),
Rx.Observable.range(21, 25)
)
.scan(({intersected, set}, n) => ({intersected: set.has(n), set: set.add(n)}),
{intersected: false, set: new Set()}
)
.pluck('intersected')
.flatMap(b => b ? Rx.Observable.throw(new Error('')) : Rx.Observable.empty())
.subscribe(
x => x,
err => console.log('There was an intersection'),
_ => console.log('No intersection')
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment