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