为什么 Flowables 不是 Observables; Observable 接口(interface)几乎是 Flowable 的一个子集,它们的实现几乎相同。
他们为什么不实现一个通用接口(interface),以便我们可以直接将 Flowable 转换为 Observable?
最佳答案
概念分离。我会选择 Flowable
只是因为它可以执行所有其他类型。然而,社区强烈希望以不同的类型反射(reflect)主要的行为属性: Single
、 Maybe
、 Completable
...
这是可能不是每天都编程的人的普遍观点。对他们来说不幸的是,类型系统和语言 (Java) 并没有让这种高级抽象很容易或根本没有被专门化。
另外,实现背压需要 specific algorithms and building blocks 并且会变得非常复杂。我鼓励您查看更难的运算符之一之间的区别: Flowable.flatMapIterable 与 Observable.flatMapIterable 。
Flowable
实现了 Reactive-Streams 接口(interface),因此我们不能只声明 Subscriber extends Observer
和 Subscription extends Disposable
。
此外,在早期的 v2 中,Observable
实现了 Publisher
并导致大量的歧义,手动转换将成为库用户的主要痛点。
关于rx-java - 为什么 Flowables 不是 Observables,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43876069/