我正在处理一个项目,其中代码库的部分在使用BehaviorSubject时非常自由。在大多数情况下,当没有初始状态或需要在第一个明确的“onNext / emit”之外有一个初始值时使用。
我很难确定这是否有任何缺点?如果没有,为什么不所有人都只使用BehaviorSubject(即使没有参数构造)而不是标准Subject?
提前感谢!
var x;
x = 5;
替代
var x = 5;
但是...为什么要这样做?
不要发出订阅者需要费力忽略的事件。一个典型的Angular案例是使用Subject,你在ngOnDestroy中发出+完成它,这样你就可以使用takeUntil来限制组件中的订阅。如果它是BehaviorSubject,它就行不通了。
Subject
背后的原则。像大多数情况一样,每个选择都应由上下文确定。一些好的初始问题如下:
Observable
/Observer
引擎吗?Subject
。
Subject
的例子是,当您打开一个弹出窗口并监听鼠标点击事件以隐藏该弹出窗口时。您不想捕获最后一个鼠标事件只是为了丢弃它,而是要等待下一个事件。 - Harry Ninh