Last active
August 9, 2017 00:02
-
-
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)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
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