BACK
ПрактикаReal-life: scan() счётчик reconnect
ПРАКТИКА · 68 · 練

Real-life: scan() счётчик reconnect

Посчитайте количество down-событий, сохраняя текущий status.

  1. Решите задачу в редакторе без длинной теории.
  2. Запустите проверку и сравните вывод с ожидаемым.
  3. Если застряли, откройте решение и перенесите подход в свой код.
Решение spoiler · click to reveal
const { from, scan, map } = Rx;

const events = ['down', 'up', 'down'];

const result$ = from(events).pipe(
  scan((state, status) => ({
    status,
    downs: state.downs + (status === 'down' ? 1 : 0)
  }), { status: 'init', downs: 0 }),
  map(state => state.status + ':' + state.downs)
);

result$.subscribe(value => console.log(value));
script.ts // TypeScript
CONSOLE · Console Output
Нажмите на запуск, чтобы увидеть результат...