Если вы читаете это, вы, вероятно, играли с различными типами тем, которые предлагает RxJS. Но знаете ли вы, почему вы конкретно используете каждый из них? Или, что более важно, вы используете тот, который вам действительно нужен?
Давайте подробнее рассмотрим четыре различных типа, доступных в RxJS:
Subject
BehaviorSubject
ReplaySubject
AsyncSubject
Предмет
Subject
— это особый тип Observable, который позволяет передавать значения множеству наблюдателей.
- Каждый
Subject
являетсяObservable
. ИмеяSubject
, вы можетеsubscribe
указатьObserver
, который начнет получать значения в обычном режиме. - Каждый
Subject
являетсяObserver
. Чтобы отправить новое значение вSubject
, просто вызовитеnext(value)
, и оно будет передано наблюдателям, зарегистрированным для прослушиванияSubject
.
Когда вы подписываетесь на Subject
, Observer
будет получать каждое значение, отправленное после оформления подписки. Любые значения, отправленные до подписки, не будут получены Observer
.
ПоведениеТема
BehaviorSubject
ведет себя так же, как Subject
, но Observer
также получает последнее значение, отправленное до того, как была сделана подписка.
ReplaySubject
ReplaySubject
ведет себя как BehaviorSubject
, но вместо того, чтобы выдавать только последнее значение, вы можете записать несколько значений, чтобы воспроизвести их новым подписчикам. Например, вы можете буферизовать последние 2 значения:
АсинкСубъект
AsyncSubject
ведет себя иначе. Это вариант, в котором наблюдателям отправляется только последнее значение выполнения Observable
, и только после завершения выполнения.
Я надеюсь, что вы найдете эту статью полезной. Теперь просмотрите свой код, чтобы убедиться, что вы используете тот, который лучше всего соответствует вашим потребностям!
Об авторе:
Мигель Муньос — главный инженер-программист здесь, в версии 1.