Возвращаются ли объекты поведения (как наблюдаемые), выполняемые take (1) или отписываться? - PullRequest
2 голосов
/ 09 января 2020

Если я возвращаю BehaviorSubject как Observable из службы и подписываюсь на это Observable в компоненте, а затем вызываю take (1) или unsubscribe, продолжает ли BehaviorSubject выдавать значения? Это осуществлено?

Редактировать Спасибо всем за ответы. Это проясняет ситуацию для меня.

Ответы [ 2 ]

3 голосов
/ 09 января 2020

Наблюдаемые (которые на самом деле являются просто фабриками для наблюдаемых потоков), как правило, не затрагиваются их подписчиками. Тем не менее, они могут быть реализованы таким образом, чтобы отписаться от них влияет на других подписчиков. Это не относится к BehaviorSubject.

Как правило, вы не захотите изменять другие потоки, когда подписчик отписывается. Это будет go против целей эластичности и повторяемости реактивного программирования (совместно используемое состояние потенциально создает узкие места и приводит к распространению ошибок в другие потоки)

Так что да, BehaviorSubject сохранит отправка другим подписчикам, если она не завершена. Однако он не отправляет подписчику take(1) в любое время после отправки первого уведомления.

0 голосов
/ 09 января 2020

В этом сценарии ios есть две разные роли: Наблюдаемая и Наблюдатель (тот, кто подписывается на Наблюдаемое). Действия, предпринятые Observer, не влияют на поведение наблюдаемой, поэтому, если наблюдатель отписывается от наблюдаемой, он не влияет на саму наблюдаемую. Другие наблюдатели на эту Наблюдаемую продолжают подписываться, а Наблюдаемая продолжает излучать значения.

...