Chu*_*ulo 21 android rx-java rx-swift reactivex
我正试图绕过黄金法则(如果有的话):
何时使用BehaviorSubject?
和
何时使用PublishSubject?
他们之间的区别非常明显
有很多种科目.对于这个特定的要求,PublishSubject运行良好,因为我们希望从它停止的位置继续序列.所以假设事件1,2,3在(B)中发出,在(A)连接之后我们只想看到4,5,6.如果我们使用ReplaySubject,我们会看到[1,2,3],4, 5,6; 或者如果我们使用了BehaviorSubject,我们会看到3,4,5,6等等(来源:如何考虑RxJava中的主题(第1部分))
我已经看到它Subject用于两个上下文(至少),UI上下文和监听器上下文.
例如这里一个BehaviorSubject被使用,并且他们为什么使用它显然Subject并没有Observable,但我已经改变了BehaviorSubject到PublishSubject,但应用程序的行为仍然是相同的.
他们为什么要创建项目领域BehaviorSubject而不是PublishSubject?
Dmi*_*try 22
PublishSubject和之间的主要区别BehaviorSubject是后者记住最后一个发射的项目.因为这BehaviorSubject在您想要发射时非常有用states.
为什么他们将项目字段设为BehaviorSubject而不是PublishSubject?
可能是因为他们希望能够使用此方法检索最后发出的项目:
@Override public @NonNull Observable<Project> project() {
return this.project;
}
Run Code Online (Sandbox Code Playgroud)
Pra*_*noi 15
发布主题:这里,如果一个学生进教室晚了,他只想从他进教室的那个时间点开始听。因此,发布将是此用例的最佳选择。
行为主题:在这里,如果一个学生进入教室很晚,他想听教授最近教的东西(不是从头开始),以便他了解上下文。所以,在这里我们将使用 Behavior。
PublishSubject:开始为空,仅向订阅者发出新元素。在创建主题和观察者订阅之间可能会丢失一个或多个项目,因为PublishSubject在创建后立即开始发出元素。
BehaviorSubject:它需要一个初始值和重播,或以新的最新元素的用户。作为BehaviorSubject总是发出了最新的元素,你不能没有给默认的初始值创建一个。 BehaviorSubject有助于描述“随时间变化的值”。例如,生日的事件流是Subject,但是一个人的年龄流将是BehaviorSubject。
| 归档时间: |
|
| 查看次数: |
9561 次 |
| 最近记录: |