Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

RxJS - Multiple sources for .withLatestFrom

Tags:

angular

rxjs

ngrx

I want to merge the latest emitted values from multiple Observables, so right now I'm using .withLatestFrom. Except, it nests the data together in nested arrays instead of pushing the data into a new array value. Example code below.

Any ideas on how I can retrieve multiple Observable emits using .withLatestFrom?

source0
  .withLatestFrom(source1)
  .withLatestFrom(source2)
  .withLatestFrom(source3)
  .map((data) => { console.log(data) });
like image 538
Preda70R Avatar asked Apr 19 '17 18:04

Preda70R


2 Answers

withLatestFrom supports multiple observables:

.withLatestFrom(source1, source2, source3)
.map((data) => { console.log(data) });

-> [val, value1, value2, value3]

It also supports function as it's last parameter, so you can get values other than arrays:

observable$
    .withLatestFrom(source1, source2, (val, one, two) => {
        return {val: val, one: one, two: two};
     });
like image 155
adharris Avatar answered Nov 18 '22 17:11

adharris


withLatestFrom accepts multiple observables. so you can write it like:

let obs1$ = Rx.Observable.of('a');
let obs2$ = Rx.Observable.of('b');

Rx.Observable.interval(1000)
  .withLatestFrom(obs1$, obs2$)
  .subscribe(x=>console.log(x))
like image 9
Julia Passynkova Avatar answered Nov 18 '22 17:11

Julia Passynkova