Rxjs operators: scan vs. reduce

Thursday, October 29, 2020

The scan and reduce RxJS operators are two very similar operators that work very much like the reduce() method of arrays.

The difference is an observable created with scan will emit on each source emission, whereas reduce will emit only once on completion.

Code Examples


const source$ = interval(1000).pipe(take(4));
// source$: -0-1-2-(3|)

const usingScan$ = source$.pipe(scan(
  (acc, curr) => acc + curr,
// usingScan$: -0-1-3-(6|)

const usingReduce$ = source$.pipe(reduce(
  (acc, curr) => acc + curr,
// usingReduce$: -------(6|)
Zack DeRose

Have a question or comment?