日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

RxJava 过滤操作符 throttleFirst 与 throttleLast 以及 sample

發(fā)布時間:2023/11/27 生活经验 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。