BACK
Уроки40. ReplaySubject: история значений
Уроки · 40

40. ReplaySubject: история значений

ReplaySubject — буфер истории

ReplaySubject(bufferSize) хранит последние N значений. Каждый новый подписчик получает их «проигрыванием» — как будто записанный заранее эпизод.

Сравнение трёх типов Subject

ТипЧто помнитНужно initial?
Subjectничегонет
BehaviorSubject1 последнееда
ReplaySubject(N)N последнихнет

Где используется

  • Аналитика: «история действий пользователя».
  • Кэш последних значений, который может посмотреть новый подписчик.
  • Передача «уже произошедших» событий в позднюю подписку.

Что нужно сделать

  1. Создайте const history$ = new ReplaySubject(2); — буфер 2.
  2. До подписки последовательно отправьте 1, 2, 3 через history$.next(...).
  3. После подписки отправьте 4.
  4. Ожидаемый вывод: --- Subscribe --- → Value: 2 → Value: 3 → Value: 4. Значение 1 выпало из буфера (он хранит только 2 последних).
Решение spoiler · click to reveal
const { ReplaySubject } = Rx;

const history$ = new ReplaySubject(2);

history$.next(1);
history$.next(2);
history$.next(3);

console.log('--- Subscribe ---');
history$.subscribe(value => console.log('Value: ' + value));

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