Last active
February 24, 2016 00:00
-
-
Save rehia/c6800ce163286b3453c6 to your computer and use it in GitHub Desktop.
Don't manage to concat an observable with a hot observable, with buffering the 2nd one while the 1st is actually working
This file contains hidden or 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
'use strict'; | |
var Rx = require('rx'); | |
var EventEmitter = require('events').EventEmitter; | |
var emitter = new EventEmitter(); | |
var observable1 = new Rx.Subject(); | |
var buffer = new Rx.ReplaySubject(); | |
var observable2 = Rx.Observable.fromEvent(emitter, 'test'); | |
observable2.subscribe(buffer); | |
emitter.emit('test', {a: 1}); | |
emitter.emit('test', {a: 2}); | |
observable1.concat(buffer) | |
.subscribe(e => { | |
console.log('concat', e); | |
}); | |
observable1.onNext({b:3}); | |
observable1.onNext({b:4}); | |
observable1.onCompleted(); |
This file contains hidden or 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
'use strict'; | |
var Rx = require('rx'); | |
var EventEmitter = require('events'); | |
var emitter = new EventEmitter(); | |
var observable1 = new Rx.Subject(); | |
var controller = new Rx.Subject(); | |
var observable2 = Rx.Observable.fromEvent(emitter, 'test') | |
.pausableBuffered(controller); | |
emitter.emit('test', { a: 1 }); | |
emitter.emit('test', { a: 2 }); | |
observable1.doOnCompleted(() => { | |
controller.onNext(true); | |
}); | |
observable1.concat(observable2) | |
.subscribe(e => { | |
console.log(e); | |
}); | |
observable1.onNext({b:3}); | |
observable1.onNext({b:4}); | |
observable1.onCompleted(); |
@rehia change line 16 from
observable1.doOnCompleted(() => {
controller.onNext(true);
});
to
observable1.subscribe(null, null, () => {
controller.onNext(true);
});
Or L20 from
observable1.concat(observable2)
to
observable1.doOnCompleted(() => controller.onNext(true)).concat(observable2);
then remove L16-18
@d6u @trcllnt Thanks for your suggestion.
But I didn't manage to make it work with it... :( Event after fixing line 4 issue (missing EventEmitter).
I followed the advice I got on a tweet, and it did the job !
https://twitter.com/yermakavets/status/702247545985228800
I put my solution in a FIXED version of the original file.
Node version is 4.3.1, Rx 4.0.8 (if it can help)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I expect this code to output
But I don't manage to get
observable2
values in the concat...Any way to fix this ?