时间:2021-07-01 10:21:17 帮助过:6人阅读
分别进订阅
- <ol style="margin:0 1px 0 0px;padding-left:40px;" start="1" class="dp-css"><li>private Observable<boolean> allObserver() {<br></boolean></li><li>Observable<integer> just;<br></integer></li><li>if (tag) {<br></li><li>just = Observable.just(1, 2, 3, 4, 5);<br></li><li>} else {<br></li><li>just = Observable.just(1, 2, 3, 4, 5, 6);<br></li><li>}<br></li><li>tag = true;<br></li><li>return just.all(integer -> integer < 6);<br></li><li>}<br></li><li><br></li><li>private Observable<integer> ambObserver() {<br></integer></li><li>Observable<integer> delay3 = Observable.just(1, 2, 3).delay(3000, TimeUnit.MILLISECONDS);<br></integer></li><li>Observable<integer> delay2 = Observable.just(4, 5, 6).delay(2000, TimeUnit.MILLISECONDS);<br></integer></li><li>Observable<integer> delay1 = Observable.just(7, 8, 9).delay(1000, TimeUnit.MILLISECONDS);<br></integer></li><li>return Observable.amb(delay1, delay2, delay3);<br></li><li>}</li></ol>
运行结果如下所示。第一次返回的6个数据的Observable不满足所有都小于6的条件,所以结果是false,以后的都满足条件,所以结果是true。使用amb操作符的Observable,第一个发射的数据的是7,所以输出了7,8,9,其他的数据都丢弃了。
- <ol style="margin:0 1px 0 0px;padding-left:40px;" start="1" class="dp-css"><li>mLButton.setText("all");<br></li><li>mLButton.setOnClickListener(e -> allObserver().subscribe(i -> log("all:" + i)));<br></li><li>mRButton.setText("amb");<br></li><li>mRButton.setOnClickListener(e -> ambObserver().subscribe(i -> log("amb:" + i)));</li></ol>
分别进行订阅
- <ol style="margin:0 1px 0 0px;padding-left:40px;" start="1" class="dp-css"><li>private Observable<boolean> containsObserver() {<br></boolean></li><li>if (tag) {<br></li><li>return Observable.just(1, 2, 3).contains(3);<br></li><li>}<br></li><li>tag = true;<br></li><li>return Observable.just(1, 2, 3).contains(4);<br></li><li>}<br></li><li><br></li><li>private Observable<boolean> defaultObserver() {<br></boolean></li><li>return Observable.create(new Observable.OnSubscribe<integer>() {<br></integer></li><li>@Override<br></li><li>public void call(Subscriber<!--? super Integer--> subscriber) {<br></li><li>subscriber.onCompleted();<br></li><li>}<br></li><li>}).isEmpty();<br></li><li>}</li></ol>
运行结果如下
- <ol style="margin:0 1px 0 0px;padding-left:40px;" start="1" class="dp-css"><li>mLButton.setText("contains");<br></li><li>mLButton.setOnClickListener(e -> containsObserver().subscribe(i -> log("contains:" + i)));<br></li><li>mRButton.setText("isEmpty");<br></li><li>mRButton.setOnClickListener(e -> defaultObserver().subscribe(i -> log("isEmpty:" + i)));</li></ol>
分别进行订阅
- <ol style="margin:0 1px 0 0px;padding-left:40px;" start="1" class="dp-css"><li>private Observable<integer> emptyObserver() {<br></integer></li><li>return Observable.create(new Observable.OnSubscribe<integer>() {<br></integer></li><li>@Override<br></li><li>public void call(Subscriber<!--? super Integer--> subscriber) {<br></li><li>subscriber.onCompleted();<br></li><li>}<br></li><li>}).defaultIfEmpty(10);<br></li><li>}<br></li><li><br></li><li>private Observable<integer> notEmptyObserver() {<br></integer></li><li>return Observable.create(new Observable.OnSubscribe<integer>() {<br></integer></li><li>@Override<br></li><li>public void call(Subscriber<!--? super Integer--> subscriber) {<br></li><li>subscriber.onNext(1);<br></li><li>subscriber.onCompleted();<br></li><li>}<br></li><li>}).defaultIfEmpty(10);<br></li><li>}</li></ol>
运行结果如下
- <ol style="margin:0 1px 0 0px;padding-left:40px;" start="1" class="dp-css"><li>mLButton.setText("empty");<br></li><li>mLButton.setOnClickListener(e -> emptyObserver().subscribe(i -> log("empty:" + i)));<br></li><li>mRButton.setText("notEmpty");<br></li><li>mRButton.setOnClickListener(e -> notEmptyObserver().subscribe(i -> log("notEmpty:" + i)));</li></ol>
分别进行订阅
- <ol style="margin:0 1px 0 0px;padding-left:40px;" start="1" class="dp-css"><li>private Observable<boolean> equalObserver() {<br></boolean></li><li>return Observable.sequenceEqual(Observable.just(1, 2, 3), Observable.just(1, 2, 3));<br></li><li>}<br></li><li><br></li><li>private Observable<boolean> notEqualObserver() {<br></boolean></li><li>return Observable.sequenceEqual(Observable.just(1, 2, 3), Observable.just(1, 2));<br></li><li>}</li></ol>
运行结果如下
- <ol style="margin:0 1px 0 0px;padding-left:40px;" start="1" class="dp-css"><li>mLButton.setText("equal");<br></li><li>mLButton.setOnClickListener(e -> equalObserver().subscribe(i -> log("equal:" + i)));<br></li><li>mRButton.setText("notequal");<br></li><li>mRButton.setOnClickListener(e -> notEqualObserver().subscribe(i -> log("notequal:" + i)));</li></ol>
分别进行订阅
- <ol style="margin:0 1px 0 0px;padding-left:40px;" start="1" class="dp-css"><li>private Observable<long> skipUntilObserver() {<br></long></li><li>return Observable.interval(1, TimeUnit.SECONDS).skipUntil(Observable.timer(3, TimeUnit.SECONDS));<br></li><li>}<br></li><li><br></li><li>private Observable<long> skipWhileObserver() {<br></long></li><li>return Observable.interval(1, TimeUnit.SECONDS).skipWhile(aLong -> aLong < 5);<br></li><li>}</li></ol>
运行结果如下
- <ol style="margin:0 1px 0 0px;padding-left:40px;" start="1" class="dp-css"><li>mLButton.setText("skipUntil");<br></li><li>mLButton.setOnClickListener(e -> skipUntilObserver().subscribe(i -> log("skipUntil:" + i)));<br></li><li>mRButton.setText("skipWhile");<br></li><li>mRButton.setOnClickListener(e -> skipWhileObserver().subscribe(i -> log("skipWhile:" + i)));</li></ol>
分别进行订阅
- <ol style="margin:0 1px 0 0px;padding-left:40px;" start="1" class="dp-css"><li>private Observable<long> takeUntilObserver() {<br></long></li><li>return Observable.interval(1, TimeUnit.SECONDS).takeUntil(Observable.timer(3, TimeUnit.SECONDS));<br></li><li>}<br></li><li><br></li><li>private Observable<long> takeWhileObserver() {<br></long></li><li>return Observable.interval(1, TimeUnit.SECONDS).takeWhile(aLong -> aLong < 5);<br></li><li>}</li></ol>
运行结果如下
- <ol style="margin:0 1px 0 0px;padding-left:40px;" start="1" class="dp-css"><li>mLButton.setText("takeUntil");<br></li><li>mLButton.setOnClickListener(e -> takeUntilObserver().subscribe(i -> log("takeUntil:" + i)));<br></li><li>mRButton.setText("takeWhile");<br></li><li>mRButton.setOnClickListener(e -> takeWhileObserver().subscribe(i -> log("takeWhile:" + i)));</li></ol>
http://www.bkjia.com/PHPjc/1077808.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1077808.htmlTechArticleRxJava操作符(七)Conditional and Boolean 在这篇文章里我们来了解一下条件和布尔操作符。 一、All/Amb All操作符根据一个函数对源Observable发射的...