【问题标题】:Why Observable was subscribed more then once为什么 Observable 被订阅了不止一次
【发布时间】:2016-12-20 13:30:38
【问题描述】:

Observable 只能由一个观察者订阅。 Subject 允许将值多播到许多观察者,但在这个例子中,为什么 foo 被订阅了两次?谢谢!

enter image description here

【问题讨论】:

  • 当然一个 Observable 可以被订阅多次。这是 Rx 最基本的原理。在reactivex.io/documentation/observable.html 上至少查看基础知识
  • 一个“multicasted Observable”通过一个可能有很多订阅者的 Subject 传递通知,而一个普通的“unicast Observable”只向一个 Observer 发送通知。我在 DOC 中阅读了这些内容
  • 这正是您的示例中正在发生的事情。你只有两个订阅同一个 observable 的观察者。他们每个人都会收到他们应该收到的通知 - 检查我的答案。
  • 添加.share()并在分享后订阅,那么它应该只对两个订阅者执行一次

标签: rxjs observable subject


【解决方案1】:

嗯 foo 订阅了两次,因为您订阅了两次。对于以Rxjs 开头的人来说,这是一个典型的困惑。多次订阅某种类型的 observables(称为冷 observables),将导致你重复完全相同的过程,这就是这里发生的事情。为了更好地理解这个问题,你可以参考这里已经处理过的问题:Hot and Cold observables : are there 'hot' and 'cold' operators?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多