from
RxJS 5 from
by Echyzen
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/6.2.1/rxjs.umd.js"></script>
<script src="https://rawgit.com/eu81273/jsfiddle-console/master/console.js"></script>
JavaScript
// emit every 1s, take2
const source$ = rxjs.interval(1000).pipe(rxjs.operators.take(2))
// map each emitted value from source$ to interval observable that takes 5 values
const example$ = source$.pipe(
rxjs.operators.map(val => {
return rxjs.interval(1000).pipe(
rxjs.operators.map(i => `Result (${val}): ${i}`),
rxjs.operators.take(5)
)
})
)
/*
2 values from source will map to 2 inner observables that emit every 1s combineAll uses combineLatest strategy, emitting the last value from each whenever either observable emits a value
*/
const combined$ = example$.pipe(rxjs.operators.combineAll())
/*
output:
["Result (0): 0", "Result (1): 0"]
["Result (0): 1", "Result (1): 0"]
["Result (0): 1", "Result (1): 1"]
["Result (0): 2", "Result (1): 1"]
["Result (0): 2", "Result (1): 2"]
["Result (0): 3", "Result (1): 2"]
["Result (0): 3", "Result (1): 3"]
["Result (0): 4", "Result (1): 3"]
["Result (0): 4", "Result (1): 4"]
*/
const subscribe = combined$.subscribe(val => console.log(val))