Уроки40. ReplaySubject: история значений
Уроки · 40
40. ReplaySubject: история значений
ReplaySubject — буфер истории
ReplaySubject(bufferSize) хранит последние N значений. Каждый новый подписчик получает их «проигрыванием» — как будто записанный заранее эпизод.
Сравнение трёх типов Subject
| Тип | Что помнит | Нужно initial? |
|---|---|---|
Subject | ничего | нет |
BehaviorSubject | 1 последнее | да |
ReplaySubject(N) | N последних | нет |
Где используется
- Аналитика: «история действий пользователя».
- Кэш последних значений, который может посмотреть новый подписчик.
- Передача «уже произошедших» событий в позднюю подписку.
Что нужно сделать
- Создайте
const history$ = new ReplaySubject(2);— буфер 2. - До подписки последовательно отправьте
1,2,3черезhistory$.next(...). - После подписки отправьте
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
CONSOLE · Console Output
Нажмите на запуск, чтобы увидеть результат...