RxJava 过滤操作符 throttleFirst 与 throttleLast 以及 sample
生活随笔
收集整理的這篇文章主要介紹了
RxJava 过滤操作符 throttleFirst 与 throttleLast 以及 sample
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
看文檔發(fā)現(xiàn)?throttleFirst 與 throttleLast 以及 Sample 都跳到同一個界面Sample
?
throttleFirst :在某段時間內(nèi),只發(fā)送該段時間內(nèi)第1次事件(假如一個按鈕1秒內(nèi)點了3次 ,第一次顯示,后2次不顯示)
throttleLast:?在某段時間內(nèi),只發(fā)送該段時間內(nèi)最后1次事件(假如一個按鈕1秒內(nèi)點了3次 ,最后第一次顯示,前兩次不顯示)
Sample:?在某段時間內(nèi),只發(fā)送該段時間內(nèi)最后1次事件 與?throttleLast 類似?
看下代碼
1?throttleFirst
測試為1秒內(nèi)發(fā)送次數(shù)
Observable.create(new ObservableOnSubscribe<Integer>() {@Overridepublic void subscribe(ObservableEmitter<Integer> emitter) throws Throwable {emitter.onNext(1);//第一次發(fā)送Thread.sleep(500);emitter.onNext(2);//時間沒有超過1s 不發(fā)送Thread.sleep(500);emitter.onNext(3); //時間為500+500 為1 s 發(fā)送Thread.sleep(500);emitter.onNext(4); //時間沒有超過1s 不發(fā)送Thread.sleep(1500);emitter.onNext(5); //時間超過1 s 發(fā)送Thread.sleep(500);emitter.onNext(6);//時間沒有超過1s 不發(fā)送Thread.sleep(500);emitter.onNext(7);//時間超過1 s 發(fā)送}}).throttleFirst(1000,TimeUnit.MILLISECONDS).subscribe(new Consumer<Integer>() {@Overridepublic void accept(Integer integer) throws Throwable {Log.e("--------rxjava",integer.toString());}});
?
打印結(jié)果為
2throttleLast 測試為1秒內(nèi)最后一次發(fā)送
Observable.create(new ObservableOnSubscribe<Integer>() {@Overridepublic void subscribe(ObservableEmitter<Integer> emitter) throws Throwable {emitter.onNext(1);//第一次不發(fā)送Thread.sleep(400);emitter.onNext(2);Thread.sleep(400);emitter.onNext(3);Thread.sleep(900);emitter.onNext(4);Thread.sleep(400);emitter.onNext(5);Thread.sleep(700);emitter.onNext(6);Thread.sleep(900);emitter.onNext(7);}}).throttleLast(1000,TimeUnit.MILLISECONDS).subscribe(new Consumer<Integer>() {@Overridepublic void accept(Integer integer) throws Throwable {Log.e("--------rxjava",integer.toString());}});}
打印結(jié)果
3?Sample
Observable.create(new ObservableOnSubscribe<Integer>() {@Overridepublic void subscribe(ObservableEmitter<Integer> emitter) throws Throwable {emitter.onNext(1);//第一次不發(fā)送Thread.sleep(400);emitter.onNext(2);Thread.sleep(400);emitter.onNext(3);Thread.sleep(900);emitter.onNext(4);Thread.sleep(400);emitter.onNext(5);Thread.sleep(700);emitter.onNext(6);Thread.sleep(900);emitter.onNext(7);}}).sample(1000,TimeUnit.MILLISECONDS).subscribe(new Consumer<Integer>() {@Overridepublic void accept(Integer integer) throws Throwable {Log.e("--------rxjava",integer.toString());}});}
打印結(jié)果
Sample 與?throttleLast 是一樣的效果....
總結(jié)
以上是生活随笔為你收集整理的RxJava 过滤操作符 throttleFirst 与 throttleLast 以及 sample的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 求一个带平字的微信网名
- 下一篇: RxJava firstElement