本章的目的是解释RxJava操作符的基本原理,以及如何编写它们来构建高级别、易于使用的数据管道。RxJava如此强大的原因之一是它提供了丰富的内置操作符,以及创建自定义操作的可能性。操作符是一个函数,它将Observable<T>,并返回下游Observable<R>,其中T和R的类型可能相同,也可能不相同。操作符允许将简单的转换组合成复杂的处理图。
例如,Observable.filter()操作符接收上游Observable的条目,但只转发与给定谓词(即Java中的java.util.function.Predicate)匹配的条目。相反地,“Observable.map”()会在数据条目飞过的时候映射转换它接收到的条目。map使得我们可以提取、丰富或包装原始事件。有些操作符则影响了调用。例如,Observable.delay()将按原样传递事件;然而,但是每一个都将在一个固定的延迟之后出现。最后,还有一些操作符(如Observable.buffer()),在发出它们之前,会先消耗一些输入事件,比如这可能是批处理。
但即使你认识到Rx运算符是多么美妙,真正的力量来自将它们组合在一起。链接多个操作符,将流分叉到多个子流中,然后爱后面再将他们join起来,这是一个习惯用法,您也应该感到非常舒服。