Search code examples
javascriptrxjsrxjs5

Pipe RxJS observable to existing subject


There is existing subject that is in use:

const fooSubject = new BehaviorSubject(null);

And there is another observable (another subject in this example):

const barSubject = new Subject();
barSubject.subscribe(
  value => fooSubject.next(),
  err => fooSubject.error(err),
  () => fooSubject.complete()
);

barSubject.next('bar');

The code works but looks clumsy.

Is there a better way to pipe (in broad sense, not necessarily using pipe operator) barSubject observable to fooSubject? It looks like an operation that could be handled by the library itself.


Solution

  • Since Subject is already an observer with methods next(), error() and complete() you can just subscribe it to any Observable:

    const fooSubject = new BehaviorSubject(null);
    
    const barSubject = new Subject();
    barSubject.subscribe(fooSubject);
    
    barSubject.next('bar');