只發射第乙個資料,使用沒有引數的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...