RxJava的concat操作符
程序员文章站
2022-06-22 15:56:11
更多文章请点击:http://77blogs.com/?p=170 转载请标明出处:https://www.cnblogs.com/tangZH/p/12088332.html,http://77blogs.com/?p=170 使用场景一: 现在要执行两个任务: 1、输出字符串0 2、输出字符串1 ......
更多文章请点击:
转载请标明出处:https://www.cnblogs.com/tangzh/p/12088332.html,
使用场景一:
现在要执行两个任务:
1、输出字符串0
2、输出字符串1
我们就可以使用concat来实现多个数据源。
1、输出字符串0的数据源:
observable observablelocal = observable.create(new observableonsubscribe() { @override public void subscribe(observableemitter emitter) throws exception { emitter.onnext("0"); emitter.oncomplete(); } }).subscribeon(schedulers.io());
2、输出字符串1的数据源:
observable observablenet = observable.create(new observableonsubscribe() { @override public void subscribe(observableemitter emitter) throws exception { emitter.onnext("1"); emitter.oncomplete(); } }).subscribeon(schedulers.io());
3、接收多个数据源:
observable.concat(observablelocal, observablenet) .observeon(androidschedulers.mainthread()) .subscribe(new consumer() { @override public void accept(object o) throws exception { log.d(tag, (string) o); } }, new consumer<throwable>() { @override public void accept(throwable throwable) throws exception { log.d(tag, throwable.getmessage()); } }); }
可以看到log:
12-23 20:23:48.771 23643-23643/com.status.rxjavasample d/rxjavahelper: 0
12-23 20:23:48.771 23643-23643/com.status.rxjavasample d/rxjavahelper: 1
两个字符串都输出了,而且是有序的。
使用场景二、
获取数据,如果从本地缓存中获取得到数据,那么便不从网络获取,否则从网络获取。
我们将上面的1,2两个步骤分别当成从本地缓存获取数据和从网络缓存中获取数据,那么我们需要改变上面的3步骤。
observable.concat(observablelocal, observablenet) .firstelement() .observeon(androidschedulers.mainthread()) .subscribe(new consumer() { @override public void accept(object o) throws exception { log.d(tag, (string) o); } }, new consumer<throwable>() { @override public void accept(throwable throwable) throws exception { log.d(tag, throwable.getmessage()); } }); }
唯一不同的是加上.firstelement()。
输出的log为:
12-23 20:29:11.731 24458-24458/com.status.rxjavasample d/rxjavahelper: 0
firstelement操作符:按照顺序依次遍历被观察者中事件,事件不为空,则停止遍历。
推荐阅读
-
详解python中的 is 操作符
-
RxJava操作符(八)Aggregate
-
js关于数组的( push、pop、unshift、shift、splice、slice、concat、 join/split)的用法
-
javascript数组(array)的常用方法(shift/unshift/pop/push/concat/splice/reverse/sort/slice/join)
-
数组中的方法?push(); unshift();pop(); shift();join();concat(); splice(); slice();
-
分别举例说明数组方法push、pop、shift、unshift、join、splice、sort、join、reverse、concat的作用?...
-
JavaScript中数组中的方法:push()、pop()、shift()、unshift()、slice()、splice()、reverse()、join()、split()、concat()、...
-
JavaScript中的操作符类型转换(图文教程)
-
JS使用new操作符创建对象的方法分析
-
Rxjava功能操作符的使用方法详解