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