Single Return Value | Multiple Return Values | |
---|---|---|
Pull/Synchronous/ Interactive |
Object | Iterables (Array/Set/ Map) |
Push/Asynchronous/Reactive | Promise | Observable |
var source$ = Rx.Observable.range(1,4); //1,2,3,4
//map & flatMap: change each value
source$.map(x => x*2); //2, 4, 6, 8
//filter: return only selected values based on custom logic
source$.filter(x => x % 2 === 0); //2, 4
//reduce: do a computation on the stream and output final value
source$.reduce((prev, curr) => prev + curr); //10
//scan: do a computation on the stream but output intermittment values
source$.scan((prev, curr) => prev + curr); //1, 3, 6, 10
//take: take the first value
source$.take(1) //1