首先我们看一个Retrofit+RxJava做网络请求的例子
接口:
|
|
调用如下
|
|
Response是为了统一处理返回结果而定义的泛型类
|
|
flatResponse是一个分割操作,旨在将Response<T>转换成Observable<T>
|
|
这只是一个接口调用,如果我们再增加一个接口getXX(),我们又需要这样
我们发现这样是不是太麻烦了,每次都要重复写这些操作符,那有没有办法将一组操作符重用于多个数据流中呢?当然有,接下来就来讲今天的重头–> compose操作符
compose
在说compose之前要先介绍下TransformerTransformer实际上就是一个Func1<Observable<T>, Observable<R>>,换言之就是:可以通过它将一种类型的Observable转换成另一种类型的Observable,这里我们就是通过Transformer将Observable<Response<T>>转换成了Observable<T>,
|
|
我们在新增一个接口的时候就可以通过compose操作符实现Transformer的转换
|
|
这样我们就实现了Observable<Response<Profile>>到Observable<Profile>的类型转换,并处理了线程调度、分割返回结果等操作符组合,达到了复用的目的
参考
【译】避免打断链式结构:使用.compose( )操作符
给 Android 开发者的 RxJava 详解
RxJava+Retrofit框架Demo(一)