为什么Flowables不是Observables

Vic*_*azi 4 rx-java reactive rx-java2

为什么Flowables不能观察到; 可观察接口几乎是Flowable的一个子集,它们的实现几乎相同.

为什么它们不实现通用接口,所以我们可以直接将Flowable转换为Observable?

Kis*_*kae 5

关于在RxJava 0.x中引入背压的一个小遗憾是,Observable本身是改装的,而不是单独的基础反应类.背压的主要问题是许多热源(例如UI事件)无法合理地反压并导致意外的MissingBackpressureException(即初学者不期望它们).

我们尝试通过使io.reactivex.Observable非背压和新的io.reactivex.Flowable为背压启用的基础反应类来纠正2.x中的这种情况.

https://github.com/ReactiveX/RxJava/wiki/What's-different-in-2.0#observable-and-flowable


aka*_*okd 5

为什么Flowables不是Observables

概念分离.我本来Flowable只是因为那可以做所有其他类型.社区,但是,他们大力投入反映了不同的类型主要行为属性:Single,Maybe,Completable...

可观察接口几乎是Flowable的子集

这是一个可能不会每天编程的人的共同观点.对他们来说不幸的是,类型系统和语言(Java)不会让这种高级抽象变得容易或完全专业化.

此外,实施背压需要特定的算法和构建块,并且可能变得非常复杂.我鼓励您查看一个更难运算符之间的区别:Flowable.flatMapIterable与Observable.flatMapIterable.

为什么它们不实现公共接口,因此我们可以直接将Flowable强制转换为Observable

Flowable实现Reactive-Streams接口,因此我们不能只声明Subscriber extends Observer和Subscription extends Disposable.

此外,在v2早期的某个时刻,Observable实施Publisher并引起大量模糊和手动投射将成为图书馆用户的主要痛点.