布尔操作符
1.all:判断Observable里的所有数据是否全部发射了,如果没有,返回false
rx.Observable.just(1,2,3,4) .all(new Func1<Integer, Boolean>() { @Override public Boolean call(Integer integer) { Log.i("xbh", integer + ""); return integer < 3; } }).subscribe(new Subscriber<Boolean>() { @Override public void onCompleted() { Log.i("xbh", "onCompleted: "); } @Override public void onError(Throwable e) { Log.i("xbh", "onError: "); } @Override public void onNext(Boolean aBoolean) { Log.i("xbh", "onNext: " + aBoolean); } });
输出
12-10 02:00:49.458 20733-20733/com.hdu.a15058124.homework3 I/xbh: 1
12-10 02:00:49.458 20733-20733/com.hdu.a15058124.homework3 I/xbh: 2
12-10 02:00:49.458 20733-20733/com.hdu.a15058124.homework3 I/xbh: 3
12-10 02:00:49.458 20733-20733/com.hdu.a15058124.homework3 I/xbh: onNext: false
12-10 02:00:49.458 20733-20733/com.hdu.a15058124.homework3 I/xbh: onCompleted:
2.contains:如果发射的数据包含1,那就返回true
rx.Observable.just(1,2,3).contains(1).subscribe(new Action1<Boolean>() { @Override public void call(Boolean aBoolean) { Log.i("xbh", "call: " + aBoolean); } });
输出
12-10 02:02:59.876 22878-22878/com.hdu.a15058124.homework3 I/xbh: call: true
3.isEmpty:判断是否发射的数据为空,如果为空,返回true;如果不为空,返回false
rx.Observable.just(1,2,3).isEmpty().subscribe(new Action1<Boolean>() { @Override public void call(Boolean aBoolean) { Log.i("xbh", "call: " + aBoolean); } });
输出
12-10 02:03:24.277 23337-23337/com.hdu.a15058124.homework3 I/xbh: call: false
条件操作符
1.amb:只让第一个Observable发射,如果后面还有Observable,就忽略。这里因为第一个延时了两秒,第二个就发射了,而他自己就被忽略了。
rx.Observable.amb(rx.Observable.just(1,2,3).delay(2, TimeUnit.SECONDS), rx.Observable.just(4,5,6)).subscribe(new Action1<Integer>() { @Override public void call(Integer integer) { Log.i("xbh", "call: " + integer); } });
输出
12-10 02:04:14.059 24179-24179/? I/xbh: call: 4
12-10 02:04:14.059 24179-24179/? I/xbh: call: 5
12-10 02:04:14.059 24179-24179/? I/xbh: call: 6
2.defaultIfEmpty:如果被观察者发射的数据为空,那么就发射defaultIfEmpty中给的那个值,这里是3
rx.Observable.create(new rx.Observable.OnSubscribe<Integer>(){ @Override public void call(Subscriber<? super Integer> subscriber) { subscriber.onCompleted(); } }).defaultIfEmpty(3).subscribe(new Action1<Integer>() { @Override public void call(Integer integer) { Log.i("xbh", "call: " + integer); } });
输出
12-10 02:06:57.401 26702-26702/com.hdu.a15058124.homework3 I/xbh: call: 3