Rxjava的學習之過濾操作符 first

2021-07-30 08:00:04 字數 2758 閱讀 3229

只發射第乙個資料,使用沒有引數的first操作符。

integer ints=;

observable.from(ints)

.first()

.subscribe(new subscriber()

@override

public

void

onerror(throwable e)

@override

public

void

onnext(integer integer)

});

執行結果:

發射第乙個滿足條件的資料。

observable.from(ints)

.first(integer

->

integer%2

==0)

.subscribe(new subscriber<

integer

>()

@override public

void onerror(throwable e)

@override public

void onnext(integer

integer)

});

執行結果:

2oncompleted

如果條件不滿足的話會執行onerror丟擲nosuchelementexception異常。

firstordefault與first類似,如果沒有資料發射,則會發射預設資料-1;

integer ints1={};

observable.from(ints1)

.firstordefault(-1)

.subscribe(new subscriber()

@override

public

void

onerror(throwable e)

@override

public

void

onnext(integer integer)

});

執行結果:

判定條件是否滿足,如果沒有滿足條件的資料時就發射乙個預設值。

integer ints2=;

observable.from(ints2)

.firstordefault(-1, integer -> integer%2==0)

.subscribe(new subscriber()

@override

public

void

onerror(throwable e)

@override

public

void

onnext(integer integer)

});

執行結果:

});

takefirst與first類似,除了這一點:如果原始observable沒有發射任何滿足條件的資料,first會丟擲乙個nosuchelementexception,takefist會返回乙個空的observable(不呼叫onnext()但是會呼叫oncompleted)。

執行結果:

oncompleted

RxJava過濾操作符 debounce

debounce操作符是對源observable間隔期產生的結果進行過濾,如果在這個規定的間隔期內沒有別的結果產生,則將這個結果提交給訂閱者,否則忽略該結果,原理有點像光學防抖.debounce 時間,時間單位 例子 observable.create new observable.onsubscr...

RxJava 過濾操作符 ofType

oftype class 指定某個型別的class,過濾屬於這個型別的的結果,其它拋棄 例子 observable.just first 2,3,four oftype integer.class subscribe new action1 結果 03 01 13 03 18.350 7828 78...

RxJava操作符學習

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