首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BehaviorSubject对PublishSubject

BehaviorSubject对PublishSubject
EN

Stack Overflow用户
提问于 2018-04-25 10:47:56
回答 4查看 31.9K关注 0票数 50

我正试着把我的头伸向黄金法则(如果有的话):

什么时候使用BehaviorSubject?

什么时候使用PublishSubject?

他们之间的差别很明显。

有很多种学科。对于这个特定的需求,PublishSubject工作得很好,因为我们希望从它停止的位置继续它的顺序。因此,假设事件1, 2,3在(B)中发出,在(A)连接回后,我们只想看到4、5、6。如果使用ReplaySubject,我们将看到1、2、3、4、5、6;或者如果我们使用BehaviorSubject,则会看到3、4、5、6等(来源:如何在RxJava中思考主题(第一部分))。

我已经看到Subject在两个上下文(至少)中使用,UI上下文和侦听器上下文。

  • UI上下文(以MVVM为例)

例如,使用这里 a BehaviorSubject,很清楚为什么他们使用Subject而不是Observable,但我已经将BehaviorSubject更改为PublishSubject,但应用程序的行为仍然相同。

  • 听者语境

为什么他们把项目字段变成BehaviorSubject而不是PublishSubject

EN

回答 4

Stack Overflow用户

发布于 2018-04-25 11:25:29

PublishSubjectBehaviorSubject的主要区别在于,后者记住最后发出的项目。正因为如此,当您想要发出BehaviorSubject states. 时,. 非常有用。

为什么他们把项目字段变成BehaviorSubject而不是PublishSubject?

可能是因为他们希望能够使用以下方法检索最后发出的项目:

代码语言:javascript
复制
@Override public @NonNull Observable<Project> project() {
  return this.project;
}
票数 44
EN

Stack Overflow用户

发布于 2018-08-16 12:53:44

PublishSubject:启动为空,只向订阅者发送新元素。有可能在创建PublishSubject Subject到观察者订阅它之间丢失一个或多个项目,因为创建后立即开始释放元素。

BehaviorSubject:它需要一个初始值重放 It或最新元素到新的subscribers.由于BehaviorSubject总是发出--最新元素,所以如果不提供默认值,就不能创建该元素。BehaviorSubject有助于描述“随时间变化的值”。例如,生日事件流是一个BehaviorSubject.主题,但是一个人的年龄流是一个

票数 37
EN

Stack Overflow用户

发布于 2020-02-26 12:58:38

出版主题:在这里,如果一个学生进入教室很晚,他只想从那个时候开始听他进入教室。因此,发布将是这个用例的最佳选择。

行为主题:在这里,如果一个学生进入教室很晚,他想听教授教的最近的事情(而不是从一开始),这样他就能了解上下文。所以,在这里,我们将使用行为。

票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50020345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档