返回的 BehaviorSubject(作为 Observable)是否受 take(1) 或取消订阅的影响?

Are returned BehaviourSubjects (as Observable) effected by take(1) or unsubscribe?

如果我 return 将 BehaviorSubject 作为来自服务的 Observable,并在组件中订阅该 Observable,然后调用 take(1) 或取消订阅,BehaviorSubject 会继续发射值吗?生效了吗?

编辑 谢谢大家的回复。这让我明白了。

Observables(实际上只是可观察流的工厂)通常不受其订阅者的影响。但是,它们 可以 以取消订阅它们会影响其他订阅者的方式实施。但是 BehaviorSubject 不是这种情况。

通常,当订阅者取消订阅时,您不希望更改其他流。这将违背响应式编程的 elasticity and reciliency goals(共享状态可能会造成瓶颈并导致错误传播到其他流)

所以是的,BehaviorSubject 将继续向其他 订阅者发送 ,只要它没有完成。但是,它不会在发送第一个通知后的任何时间发送给 take(1) 订阅者。

在这个场景中有两个不同的角色:Observable 和 Observer(订阅 Observable 的人)。 Observer 采取的行动不会影响 Observable 的行为,因此如果 Observer 取消订阅 Observable,它不会影响 Observable 本身。继续订阅该 Observable 的其他观察者,并且 Observable 继续发出值。