【发布时间】:2018-03-07 15:33:32
【问题描述】:
Observable 和 Flowable 接口似乎是相同的。为什么在 RxJava 2.0 中引入了 Flowable?什么时候我应该更喜欢使用 Flowable 而不是 Observable?
【问题讨论】:
Observable 和 Flowable 接口似乎是相同的。为什么在 RxJava 2.0 中引入了 Flowable?什么时候我应该更喜欢使用 Flowable 而不是 Observable?
【问题讨论】:
如the documentation中所述:
在 RxJava 0.x 中引入背压的一个小遗憾是 Observable 没有单独的基础反应类 本身是改装的。背压的主要问题是很多 热源(例如 UI 事件)无法合理地进行背压,并且 导致意外
MissingBackpressureException(即初学者不会 期待他们)。我们尝试在 2.x 中通过使
io.reactivex.Observable非背压和新io.reactivex.Flowable是支持背压的基础反应类。
当您随着时间的推移拥有相对较少的项目 (没有风险时,请使用 Observable。
当您拥有相对大量的项目并且需要仔细控制Producer 的行为方式以避免资源耗尽和/或拥塞时,请使用Flowable。
背压 当您有一个 observable 发出项目的速度如此之快以至于消费者无法跟上导致已发出但未消费的项目的存在时。
由 observables 发出但未被订阅者消费的未消费项目如何被管理和控制是背压策略处理的。
【讨论】: