Объяснение тем в RxJS и примеры 4 различных типов
В этой статье я объясню 4 типа тем в RxJS и объясню, когда использовать каждый с примерами.
Subject
BehaviorSubject
RelaySubject
AsyncSubject
Чтобы получить больше подобного контента, посетите https://betterfullstack.com
Тема
RxJS Subject
- это особый тип Observable
, который позволяет передавать значения множеству Observers
.
Subject
похож наObservable
, но может передавать многоадресную рассылкуObservers
.Subjects
похожи наEventEmitters
: они поддерживают реестр множества слушателей.
Каждый Subject
- это Observable
.
Каждый Subject
- это Observer
.
Subject
отправляет данные подписанным наблюдателям. Любые ранее отправленные данные не отправляются новым наблюдателям.
BehaviorSubject
BehaviorSubject
хранит последнее значение, переданное его потребителям, и всякий раз, когда подписывается новый Observer
, он немедленно получает «текущее значение».
BehaviorSubjects
полезны для представления «значений во времени». Например, поток событий дней рождения - этоSubject
, а поток событий, посвященный возрасту человека, будетBehaviorSubject
.
Отправьте последние данные новым наблюдателям.
RelaySubject
ReplaySubject
похож на BehaviorSubject
в том, что он может отправлять старые значения новым подписчикам, но он также может записывать часть выполнения Observable
.
A
ReplaySubject
записывает несколько значений изObservable
выполнения и воспроизводит их новым подписчикам.
Ранее отправленные данные могут быть «воспроизведены» новому наблюдателю.
AsyncSubject
AsyncSubject
выдаст последнее значение наблюдателям, когда последовательность завершится.
Резюме
RxJS Subject
- это особый тип Observable
, который позволяет передавать значения множеству Observers
.
Кроме того, у нас есть 3 специальных предмета: BehaviorSubject
, RelaySubject
и AsyncSubject
. Они по-разному ведут себя при получении данных наблюдателями.
Надеюсь, эта статья оказалась для вас полезной! Вы можете следить за мной на Medium. Я тоже в Твиттере. Не стесняйтесь оставлять любые вопросы в комментариях ниже. Буду рад помочь!
Ресурсы / Ссылки
[1]: Тема https://rxjs-dev.firebaseapp.com/guide/subject