Skip to content

Instantly share code, notes, and snippets.

@rehia
Last active February 24, 2016 00:00
Show Gist options
  • Save rehia/c6800ce163286b3453c6 to your computer and use it in GitHub Desktop.
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
'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();
'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
Copy link
Author

rehia commented Feb 23, 2016

I expect this code to output

{b:3}
{b:4}
{a:1}
{a:2}

But I don't manage to get observable2 values in the concat...
Any way to fix this ?

@trxcllnt
Copy link

@rehia change line 16 from

observable1.doOnCompleted(() => {
  controller.onNext(true);
});

to

observable1.subscribe(null, null, () => {
  controller.onNext(true);
});

@d6u
Copy link

d6u commented Feb 23, 2016

Or L20 from

observable1.concat(observable2)

to

observable1.doOnCompleted(() => controller.onNext(true)).concat(observable2);

then remove L16-18

@rehia
Copy link
Author

rehia commented Feb 23, 2016

@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