Advanced RxJava

NEVER STOP

深入理解 Operator:All,Any 和 Exists

原文 Operator internals: All, Any, Exists 介绍 all 这个操作符,会检查上游发出的所有数据是否都满足给定的条件(predicate),如果有任何一个数据不满足条件,就立即发出 false 然后结束,如果所有数据都满足条件(或者没有数据),就会发出 true 后结束。而 any 则和 all 在逻辑上相反,只要有一个数据满足条件,就立即发出 true...

深入理解 Operator:Amb 和 AmbWith

原文 Operator internals: Amb, AmbWith 介绍 amb 是 ambiguous 的缩写,它的输入是一个 Observable 集合,输出的是转发第一个发出事件的 Observable 的所有后续事件,并且取消订阅其他所有的 Observable,也会忽略它们的任何事件。amb 支持 backpressure。 从编写操作符的角度出发,我们需要考虑以下几个属...

深入理解 Operator:开篇

原文 Operator internals: introduction 开发操作符通常来说都不是一个傻瓜式的活。在这个 Advanced RxJava 系列博文中,我尽可能多地涵盖了我们用到的一些基础内容,以及在开发操作符的过程中得到的经验。 但是 RxJava 有将近 150 个不同的操作符,而它们中的大多数都有些自定义的逻辑,或者说超出常规的逻辑。这些内容都是很难甚至不可能用通用的方...

Subjects(三,完结):支持 backpressure 的 PublishSubject

原文 Subjects (part 3 - final) 介绍 本文作为 Subject 系列最后一篇文章,将会实现一个 PublishSubject 的变体。为了让这个过程更有趣,这个 PublishSubject 会遵循 backpressure,当订阅者请求得没那么快时,不会将它“淹没”。 PublishSubject PublishSubject 的主要类结构和上一篇文章中的...

Subjects(二):实现自定义 Subject 的要求、相关的工具类以及算法

原文 Subjects (part 2) 介绍 在本文中,我将讲讲编写一个 Subject 应该满足的要求,相关的工具类以及算法,最后我会根据上述内容实现一个支持 backpressure 的 Subject:UnicastSubject。 要求 由于 Subject 继承自 Observable 且实现了 Observer,所以它要遵循这两者的契约: [Observer] ...

Subjects(一):Subject 概念和 RxJava 中的标准实现

原文 Subjects (part 1) 介绍 我猜有很多人都恨死 Subject 了,但我还是要写一个关于它的系列文章。 有些人觉得它是响应式编程世界里面的可变状态,但我并不这样认为,然后他们就进一步叫嚣:不要使用 Subject,而是更多地使用 Observable.create(): Observable.create(s -> { int i = 0; wh...

Reactive-Streams API(四,完结):SubscriptionArbiter 的使用

原文 The Reactive-Streams API (part 4 - final) 介绍 在这篇介绍 Reactive-Streams API 的最后一篇文章中,我会讲讲我们对 SubscriptionArbiter(ProducerArbiter 的一个兄弟) 的高频使用需求,这一点可能会让很多人感到惊讶,当涉及到多个数据源、调度、其他异步内容时,我们将会很频繁的用到它。 在 ...

Reactive-Streams API(三):资源管理与 TakeUntil

原文 The Reactive-Streams API (part 3) 介绍 在本文中,我将讲解如何把 rx.Subscriber 管理资源的能力移植到 Reactive-Streams API 中。但是由于 RS 并未明确任何资源管理方面的要求,所以我们需要引入(把 rx.Subscription 重命名)我们自己的容器类型,并把它加入到 RS 的 Subscriber 的取消逻辑中...

Reactive-Streams API(二):SingleSubscription,SingleDelayedSubscription 和 RangeSubscription

原文 The Reactive-Streams API (part 2) 介绍 在本文中,我将把我们以前的 SingleProducer 和 SingleDelayedProducer 移植到基于 reactive-streams 的 Subscription。 首先,很多人可能认为这个转换过程很麻烦,但幸运的是,如果我们已经想清楚了在 rx.Producer 中如何实现 reques...

SubscribeOn 和 ObserveOn

原文 SubscribeOn and ObserveOn 注:这篇文章八月份就翻译完成了,当时是为了加深自己对 subscribeOn 和 observeOn 的理解,本打算按照原文作者的发表顺序发布译文,但今天在写拆轮子系列:拆 RxJava,里面涉及到了这块内容,为了便于援引,所以提前发布,还好发布在 scheduler 之后也算比较合理。 介绍 在响应式编程生态中,最令人疑惑的一对...