【问题标题】:Rxjs: BehaviourSubject value emissionRxjs: BehaviourSubject 值发射
【发布时间】:2017-02-12 03:43:00
【问题描述】:

我有一个行为主题BehaviorSubject<MyModel>(new MyModel)。根据我所做的阅读,我了解到,只要订阅了行为主题,订阅者就会在订阅完成后立即获得一个默认的MyModel 对象。

但我对这种情况感到困惑,假设一些ClassA 订阅了行为主题,然后在调整后在可观察对象上发出了一个值。在ClassA 发出后,ClassB 订阅主题,所以现在订阅上的ClassB 接收new MyModel() 对象或主题最后发出的模型。

如果需要进一步说明,请告诉我。

【问题讨论】:

  • 最后一个发出。 BehaviorSubject 立即在新订阅上触发最近发出的值。
  • ^^ 请注意,这不是一般的主题,它专门指BehaviorSubject。例如,ReplaySubject 会立即在新订阅中按顺序发出 all 先前发出的值。
  • 我没有ReplaySubject,它是BehaviourSubject。我知道ReplaySubject 的工作原理
  • 其他人可能不会——我的评论也是给他们的 :)
  • 对实际疑问有任何意见吗?

标签: angular rxjs behaviorsubject


【解决方案1】:

这开始是一个评论,但变成了一个答案:

在您的场景中,ClassB 实例将获得由您的 ClassA 实例发出的 MyModel 实例,不是您最初通过 new MyModel() 创建的实例。

一般来说,BehaviorSubject 会立即在新订阅上触发单个最近发出的值 - 这种行为是定义 BehaviorSubject 的原因 - 例如,ReplaySubject 会立即发出 all 迄今为止在每个新订阅上发出的值。

请注意,这很容易通过经验证明:

【讨论】:

    猜你喜欢
    • 2020-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多