RxJava的基础使用(二)
来源:互联网 发布:31个省份空间权重矩阵 编辑:程序博客网 时间:2024/04/29 10:14
首先需要介绍Observable.from(),它的作用是传入一个数据集合执行多次直到集合全部释放出来,例如:
Observable.from(urls).subscribe(url -> System.out.println(url));
然后,介绍Observable.flatMap(),
// Returns a List of website URLs based on a text searchObservable<List<String>> query(String text);query("Hello, world!") .flatMap(new Func1<List<String>, Observable<String>>() { @Override public Observable<String> call(List<String> urls) { return Observable.from(urls); } }) .subscribe(url -> System.out.println(url));
这里需要说明的是,传入flatMap的是第一个参数List,而返回的值是Observable,利用Observable.from(urls)的意思就是将url集合分别分次的返回,相当于会返回多次Observable直到url集合全部返回,flatMap()可以返回任意Observable。
假如有这样一个方法:
// 返回网站标题,如果404就返回空Observable<String> getTitle(String URL);现在不打印url了,而是打印每个接受到的网站标题。query("Hello, world!") .flatMap(urls -> Observable.from(urls)) .flatMap(new Func1<String, Observable<String>>() { @Override public Observable<String> call(String url) { return getTitle(url); } }) .subscribe(title -> System.out.println(title));
现在需要把404的情况过滤掉,即不能显示为空:
query("Hello, world!") .flatMap(urls -> Observable.from(urls)) .flatMap(url -> getTitle(url)) .filter(title -> title != null) .subscribe(title -> System.out.println(title));
filter()只会在通过它内部的布尔值检查才会释放接受到的数据,否则不会释放出来。
现在我们最多只显示5个结果:
query("Hello, world!") .flatMap(urls -> Observable.from(urls)) .flatMap(url -> getTitle(url)) .filter(title -> title != null) .take(5) .subscribe(title -> System.out.println(title));
take()最多释放指定的数量。(如果少于5个标题,它很早就会结束)
现在我们希望将标题保存在磁盘上:
query("Hello, world!") .flatMap(urls -> Observable.from(urls)) .flatMap(url -> getTitle(url)) .filter(title -> title != null) .take(5) .doOnNext(title -> saveTitle(title)) .subscribe(title -> System.out.println(title));
doOnNext()允许我们在每次释放一项数据的时候增添额外的行为。
这里有很多RxJava提供的操作符。
出处:www.eoeandroid.com/thread-548157-1-1.html
0 0
- RxJava的基础使用(二)
- RxJava的使用基础教学 二
- Android RxJava使用介绍(二) RxJava的操作符
- Android RxJava使用介绍(二) RxJava的操作符
- Android RxJava使用介绍(二) RxJava的操作符
- Android RxJava使用介绍(二) RxJava的操作符
- Android RxJava的使用(二)Action
- 【Android】RxJava的使用(二)Action
- Android RxJava的基本使用二
- 【Android】RxJava的使用(二)Action
- RxJava的使用基础教学 一
- RxJava的使用基础教学 三
- RxJava的使用基础教学 四 RxAndroid
- RxJava使用详解二
- RXJAVA 基础使用笔记
- RxJava基础使用
- RxJava 基础使用
- RxJava零基础入门(二)
- iOS本地的缓存的方式
- 深入浅出RxJava(一:基础篇)
- 移动设备中页面缩放的设定
- HDFS 2.x 使用经验
- MySql集群搭建
- RxJava的基础使用(二)
- 暴雪透露未来将开发电视游戏
- java 线程的状态转换
- 使用github保存代码和同步代码
- App项目总结
- Android高手进阶教程之---Android WebView的缓存
- 解决方法:android 6.0(api 23) SDK,不再提供org.apache.http.*(只保留几个类)
- 深入浅出RxJava(三:响应式的好处)
- python中把一个函数作为参数