RX操作符之Observable的创建方式二(defer、range、interval、timer、Empty、Never、Throw)
来源:互联网 发布:软件测试难学吗 编辑:程序博客网 时间:2024/05/15 23:47
一、defer
Defer
操作符会一直等待直到有观察者订阅它,然后它使用Observable工厂方法生成一个Observable。它对每个观察者都这样做,因此尽管每个订阅者都以为自己订阅的是同一个Observable,事实上每个订阅者获取的是它们自己的单独的数据序列。
String[]items = {"just1","just2","just3","just4","just5","just6"}; Observable<String> myObservable = Observable.from(items); Subscriber<String> mySubscriber = new Subscriber<String>() { @Override public void onNext(String s) { System.out.println("onNext................."+s); } @Override public void onCompleted() { System.out.println("onCompleted................."); } @Override public void onError(Throwable e) { System.out.println("onError...................."); } }; Subscriber<String> mySubscriber1 = new Subscriber<String>() { @Override public void onNext(String s) { System.out.println("onNext................."+s); } @Override public void onCompleted() { System.out.println("onCompleted................."); } @Override public void onError(Throwable e) { System.out.println("onError...................."); } }; myObservable.subscribe(mySubscriber); myObservable.subscribe(mySubscriber1);运行结果:
尽管打印的结果一样,但是它们不是取自同一个Observable的数据
二、Range
创建一个发射特定整数序列的Observable,接收两个参数,第一个参数是范围的起始值,第二个参数是范围的数据数目,即需要多产生多少个这样的值。如果你将第二个参数设为0,将导致Observable不发射任何数据(如果设置为负数,会抛异常)。range
默认不在任何特定的调度器上执行。有一个变体可以通过可选参数指定Scheduler。
String[]items = {"just1","just2","just3","just4","just5","just6"}; Observable<Integer> myObservable = Observable.range(5,10); Subscriber<Integer> mySubscriber = new Subscriber<Integer>() { @Override public void onNext(Integer s) { System.out.println("onNext................."+s); } @Override public void onCompleted() { System.out.println("onCompleted................."); } @Override public void onError(Throwable e) { System.out.println("onError...................."); } }; myObservable.subscribe(mySubscriber);
运行结果:
三、Interval
Interval
操作符返回一个Observable,它按固定的时间间隔发射一个无限递增的整数序列。RxJava将这个操作符实现为interval
方法。它接受一个表示时间间隔的参数和一个表示时间单位的参数。结果递增且不断增加
Observable<Long> myObservable = Observable.interval(2,TimeUnit.SECONDS); Subscriber<Long> mySubscriber = new Subscriber<Long>() { @Override public void onNext(Long s) { System.out.println("onNext................."+s); } @Override public void onCompleted() { System.out.println("onCompleted................."); } @Override public void onError(Throwable e) { System.out.println("onError...................."); } }; myObservable.subscribe(mySubscriber);
运行结果:
四、Timer
创建一个Observable,它在一个给定的延迟后发射一个特殊的值
延迟2s后发送数据
Observable<Long> myObservable = Observable .timer(2,TimeUnit.SECONDS); Subscriber<Long> mySubscriber = new Subscriber<Long>() { @Override public void onNext(Long s) { System.out.println("onNext................."+s); } @Override public void onCompleted() { System.out.println("onCompleted................."); } @Override public void onError(Throwable e) { System.out.println("onError...................."); } }; myObservable.subscribe(mySubscriber);
运行结果:
五、Empty
创建一个不发射任何数据但是正常终止的Observable
六、Never
创建一个不发射数据也不终止的Observable
七、Throw
创建一个不发射数据以一个错误终止的Observable
搜索
0 0
- RX操作符之Observable的创建方式二(defer、range、interval、timer、Empty、Never、Throw)
- RX操作符之Observable的创建方式二(defer、range、interval、timer、Empty、Never、Throw)
- RX操作符之Observable的创建方式一(just、from、repeat、repeatWhen)
- RX操作符之Observable的创建方式一(just、from、repeat、repeatWhen)
- RxJava与网络相关的操作符(range/defer/retry/repeat/timer/delay/interval/BehaviorSubject/zip)
- RX操作符之对Observable发射的数据执行变换操作二(scan、groupby、buffer、window)
- RX操作符之对Observable发射的数据执行变换操作一(map、flatmap)
- RX操作符之对Observable发射的数据执行变换操作一(map、cast、flatmap、flatmapiteriable、switchmap)
- RxJava 创建操作符 timer与interval
- Rx系列二 | Observer | Observable
- Rxjava的Observable创建操作符介绍
- RxAndroid之初体验——Create、From、interval、just、range操作符的基本使用
- RxJava-创建Observable操作符
- RX操作之辅助操作符二(doonunsubscribe、doOnCompleted、doOnError、doOnTerminate、finallyDo、delay、delaySubscription)
- Observable的操作符
- RxJava 创建操作符 defer
- Android函数响应式编程——必学的RxJava创建操作符create、just、from、interval、range、repeat
- RxJava使用小总结:Observable的创建方式、过滤Observable
- KMP算法
- 网站建设和网站运营的关系
- 遇到个奇怪的问题,同时开启本地和远程两个事务,远程事务是sql2000没问题,是sql2008的不报错,但是写不上数据
- poj 2074
- SpringMVC验证
- RX操作符之Observable的创建方式二(defer、range、interval、timer、Empty、Never、Throw)
- 房贷计算器java版
- Mongodb主从复制
- 需求变更的控制及管理
- 让RecyclerView更通用
- 在头文件中加入#program once
- JAVA之TCP网络程序
- 从零开始的Android新项目4 - Dagger2篇
- 2001 计算两点间的距离