A Subject
означает одновременно Observable
и Observer
. Это делает его настолько заманчивым в использовании, потому что вы получаете ссылку на Observer
, которую вы можете передавать в своем коде и генерировать элементы из любого места, где вы хотите. Однако это значительно увеличивает вероятность ошибок в вашем коде, поскольку вы переходите от декларативного определения Observable к императивному.
Вообще говоря, вы должны использовать наблюдаемые функции создания ( из , из , create ), где это возможно. Я бы сказал, что большинство дел можно решить без предметов. Тем не менее, существует крутая кривая обучения, поскольку вы должны познакомиться с большинством наблюдаемых функций создания, чтобы следовать этому шаблону.
Тема может быть более естественной для разработчиков, которые привыкли к обязательному кодированию (то есть с использованием языка сценариев, такого как JS), так как он напоминает простой объект-оболочку для функции обратного вызова. И кто-то может спросить, почему субъект так или иначе существует, если это нежелательно.
Согласно этой статье предметы должны использоваться только в одном случае:
Для генерации горячей наблюдаемой обязательно и без состояний без какого-либо прямого внешнего источника.
Короче говоря, это означает: используйте Subject, если у вас нет внешнего источника (например, Observable, Promise или Event) и вам необходимо многоадресно передать состояние класса изнутри функции. Вы не должны подвергать эту тему другим, хотя!
Предлагаю вам прочитать эту статью, она прояснит ситуацию.