Если вы читаете это, вы, вероятно, играли с различными типами тем, которые предлагает 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.