Skip to content

Instantly share code, notes, and snippets.

@whiteinge
Last active August 9, 2017 00:02
Show Gist options
  • Save whiteinge/49dc6cef06a6bc977c9699704832130a to your computer and use it in GitHub Desktop.
Save whiteinge/49dc6cef06a6bc977c9699704832130a to your computer and use it in GitHub Desktop.
Convert an Rx4 Observable into an Rx5 Observable (in case you need both)
/**
Convert an Rx4 Observable into an Rx5 Observable
Usage:
// When referenced:
var o4 = Rx4.Observable.interval(500).take(2).map('from 4');
var o5 = Rx5.Observable.interval(500).take(2).mapTo('from 5');
fromRx4(o4).concat(o5).subscribe(
x => console.log('next', x),
err => console.log('err', err),
() => console.log('compl'));
// Or when declared:
var o4 = fromRx4(Rx4.Observable.interval(500).take(2).map('from 4'));
var o5 = Rx5.Observable.interval(500).take(2).mapTo('from 5');
o4.concat(o5).subscribe(
x => console.log('next', x),
err => console.log('err', err),
() => console.log('compl'));
// If disposed early the inner Rx4 will also dispose:
var o4 = fromRx4(Rx4.Observable.interval(500)
.do(
x => console.log('Inner next', x),
err => console.log('Inner err', err),
() => console.log('Inner compl'))
.finally(() => console.log('Inner disposed before completion.')));
var o5 = Rx5.Observable.never();
o5.merge(o4).take(3).subscribe(
x => console.log('next', x),
err => console.log('err', err),
() => console.log('compl'));
**/
function fromRx4(o4) {
// Note: adjust `Rx5` here for however you're importing Rx5.
return Rx5.Observable.create(function(obs) {
var sub4 = o4.subscribe(
x => obs.next(x),
err => obs.error(err),
() => obs.complete());
return () => sub4.dispose();
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment