BACK
Reference · 10

scan

Аккумулирует значение и эмитит промежуточные результаты.

Сигнатура

scan(accumulator: (acc: R, value: T, index: number) => R, seed?: R): OperatorFunction

Маркеры

in:    --1--2--3--|
scan+: --1--3--6--|

Что делает

Работает как Array.reduce, но эмитит аккумулятор после каждого next. Это идеальный кирпич для построения локального состояния из потока событий.

Когда использовать

Счётчики (клики, прогресс), накопление списка элементов, маленькие state-machine, реактивный аналог Redux-редьюсера: action$.pipe(scan(reducer, initialState)).

Подводный камень

Без seed первый аккумулятор = первое значение, и тип результата ограничен T. Для разнотипного аккумулятора всегда передавайте seed.

См. также

reduce, map, distinctUntilChanged

script.ts // TypeScript
CONSOLE · Console Output
Нажмите на запуск, чтобы увидеть результат...