RxJava 2 Flowable是热还是冷?

时间:2019-10-29 18:43:29

标签: observable rx-java

我曾经认为RxJava 2的Flowable被设计为“热”和可观察的“冷”。但是我认为现在是错的-Observable和Flowable都很冷但是可以变热,例如通过使任一可连接。这是正确的吗?

1 个答案:

答案 0 :(得分:2)

我认为我们应该逐个元素定义

冷与热

对于Observable寒冷和炎热的情况,我们可以定义为“寒冷”是指Observable发出与订阅的事件相同的事件,例如Observable.just (1, 2, 3, 4, 5)而寒冷可能可能不是一直都完全相同的事件,例如对数据库的查询结果或通过改造对服务器的请求的结果。

然后我们可以将Flowable.just (1, 2, 3, 4, 5)Observable.just (1, 2, 3, 4, 5)定义为冷,在这种情况下,元素很少,并且不是连续发送项目的序列,因此值得保留可观察的。

Observable视为音乐CD,无论您使用多少次,都将始终以相同的顺序收听相同的歌曲,而 > hot Observable就像一个广播电台,您会定期收到不同的信息,也许您订阅晚了,并结束了您想收听的广播节目,或者只是有所不同。

可观察与可流动

现在,ObservableFlowable之间的主要区别在于 Flowable支持背压,可在无法消耗事件的情况下防止信息丢失与接收它们一样快。

https://github.com/ReactiveX/RxJava/wiki/Backpressure-(2.0)

ConnectableObservable

ConnectableObservable情况下,Publisher在执行ConnectableObservable::connect之后开始向订户发送信息,而不管可观察的发送者是冷还是热。

然后

重要的是要确定是否有必要使用Observable或Flowable,并根据它们发出值的方式将其称为冷或热。

下一本书给了我很大的推动力:https://www.amazon.com/Learning-RxJava-Thomas-Nield/dp/1787120422