RxJS - Multiple sources for .withLatestFrom
22,569
Solution 1
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};
});
Solution 2
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))
Related videos on Youtube
Author by
Preda70R
Updated on July 09, 2022Comments
-
Preda70R almost 2 years
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) });
-
aruno almost 7 yearsYou can wrap the
{}
with()
then you don't need an explicit return statement :.withLatestFrom(source1, source2, (val, one, two) => ({ val: val, one: one, two: two }));
-
Eliya Cohen about 5 yearsI was going to upvote this answer, but turns out I already upvoted it