Объяснение тем в RxJS и примеры 4 различных типов

В этой статье я объясню 4 типа тем в RxJS и объясню, когда использовать каждый с примерами.

  1. Subject
  2. BehaviorSubject
  3. RelaySubject
  4. 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