Referencescan
Reference · 10
scan
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
CONSOLE · Console Output
Нажмите на запуск, чтобы увидеть результат...