RxJava操作符系列三(下)

2021-09-23 06:23:29 字數 3038 閱讀 6852

接上文

take

take操作符可以修改observable的行為,只返回前面的n項資料,然後發射完成通知,忽略剩餘的資料。

observable.range(1,8) 

.take(4) 

.subscribe(new subscriber

>()  

@override 

public

void onerror(throwable error)  

@override 

public

void oncompleted()  

}); 

輸出日誌資訊

next

: 1 

next

: 2 

next

: 3 

next

: 4 

complete 

take和skip一樣也有其它兩個過載方法take(long time, timeunit unit),take(long time, timeunit unit, scheduler scheduler),預設在computation排程器上執行。

take還有變體操作符takelast,takelastbuffer具體執行效果可自行**。

debounce

該操作符指的是過了一段指定的時間還沒發射資料時才發射乙個資料,聽著可能有點繞。你可以理解對源observable間隔期產生的結果進行過濾,如果在這個規定的間隔期內沒有別的結果產生,則將這個結果提交給訂閱者,否則忽略該結果,原理有點像光學防抖

上**

observable.range(1,8) 

.take(4) 

.subscribe(new subscriber

>()  

@override 

public

void onerror(throwable error)  

@override 

public

void oncompleted()  

}); 

輸出資訊

onnext: 4 

onnext: 5 

onnext: 6 

onnext: 7 

onnext: 8 

onnext: 9 

oncompleted: 

這個輸出資料不一定一樣,有可能從5開始。

distinct

這個比較好理解,它就是過濾掉重複的資料,只允許還沒有發射過的資料項通過。

示例**

observable.just(0, 0, 6, 4, 2, 8, 2, 1, 9, 0) 

.distinct

() .subscribe(new subscriber

>()  

@override 

public

void onerror(throwable e)  

@override 

public

void onnext(

integer

integer

)  }); 

輸出日誌資訊

onnext:

distinct

0 onnext:distinct

6 onnext:distinct

4 onnext:distinct

2 onnext:distinct

8 onnext:distinct

1 onnext:distinct

9 oncompleted:distinct

elementat

該操作符獲取原始observable發射的資料序列指定索引位置的資料項,然後當做自己的唯一資料發射。給它傳遞乙個基於0的索引值,它會發射原始observable資料序列對應索引位置的值,如果你傳遞給elementat的值為4,那麼它會發射第5項的資料。如下示例**

observable.just(0, 0, 6, 4, 2, 8, 2, 1, 9, 0) 

.elementat(4) 

.subscribe(new subscriber

>()  

@override 

public

void onerror(throwable e)  

@override 

public

void onnext(

integer

integer

)  }); 

輸出日誌資訊

onnext:elementat 2 

oncompleted:elementat 

ignoreelements

操作符抑制原始observable發射的所有資料,只允許它的終止通知(onerror或oncompleted)通過,使用該操作符onnext()方法不會執行。

observable.just(1, 2, 3).ignoreelements().subscribe(new subscriber()  

@override 

public

void onerror(throwable e)  

@override 

public

void onnext(

integer

integer

)  }); 

執行後只會輸出oncompleted。這個操作符效果就如同empty()方法建立乙個空的observable,只會執行oncompleted()方法,不同的是ignoreelements是對資料來源的處理,而empty()是建立observable。

RxJava筆記 RxJava操作符

用來建立observable。public static observablecreate onsubscribef 把其他型別的物件和資料型別轉化成observable。observable.just 123 把其他型別的物件和資料型別轉化成observable。與just區別在與引數返回值不同 ...

RxJava操作符學習

操作符學習推薦閱讀 官方英文 翻譯中文 先來看乙個簡單的例子 被觀察者 observable.onsubscribeintegeronsubscribe new observable.onsubscribe 觀察者 subscriberintegersubscriber new subscriber...

RxJava常用操作符

用於建立observable 被觀察者 的操作符 用於對observable發出的資料進行變換的操作符 用於從observable發射的資料中選擇性的過濾一些資料的操作符 用於將多個observable組合成乙個單一的observable的操作符 有助於從observable的錯誤通知中恢復的操作符...