Search code examples
rxjs5

RxJS combineLatest on object of Observables?


I've found myself with a mixed object of values and observables. Something like:

const mixedObject = {
  field1: "Hello",
  field2: Rx.Observable.of('World'),
  field3: Rx.Observable.interval(1000),
};

What would be the best way of doing something like a combineLatest on this object to get a stream of plain objects.

For example, I'd like to do something like:

Rx.Observable.combineLatest(mixedObject).subscribe(plainObject => {
  console.log(plainObject.field1, plainObject.field2, plainObject.field3);
  // Outputs: 
  // > Hello World 0
  // > Hello World 1
  // > Hello World 2
});

Solution

  • This is now possible with RXJS 7.

    const res = combineLatest({ foo: a$, bar: b$, baz: c$ });
    
    res.subscribe(({ foo, bar, baz }) => { console.log(foo, bar, baz); });