-
Debounce/throtleWithTimeout
-
debounce(long,TimeUnit)或
throttleWithTimeout(long,TimeUnit) :在一個(gè)數(shù)據(jù)發(fā)射后的一個(gè)時(shí)間段內(nèi),若沒(méi)有新數(shù)據(jù)發(fā)射時(shí),發(fā)射該數(shù)據(jù);若有,則在新數(shù)據(jù)到來(lái)時(shí)重新計(jì)時(shí),重復(fù)之前所敘邏輯。
- debounce(long,TimeUnit,Scheduler)
throttleWithTimeout(long,TimeUnit,Scheduler) - debounce(Func1)
注意:源Observable觸發(fā)onComplete()并不會(huì)使數(shù)據(jù)停止發(fā)射
-
-
distinct
- distinct()
distinct(Func1):去除重復(fù)數(shù)據(jù)
注意:distinct會(huì)緩存之前發(fā)射的數(shù)據(jù),當(dāng)源Observable數(shù)據(jù)過(guò)大時(shí),需要注意內(nèi)存問(wèn)題 - distinctUntilChanged()
distinctUntilChanged(Func1):去除相鄰重復(fù)的數(shù)據(jù)
- distinct()
-
elementAt
- elementAt(int):獲取第n個(gè)數(shù)據(jù),索引從0開(kāi)始
注意:若源Observaer發(fā)射的數(shù)量為n,索引i<0 或 i>n會(huì)導(dǎo)致IndexOutOfBoundsException. - elementAtOrDefault(int,T):獲取第n個(gè)數(shù)據(jù),若不存在則發(fā)射默認(rèn)值T
- elementAt(int):獲取第n個(gè)數(shù)據(jù),索引從0開(kāi)始
-
filter:發(fā)射滿足條件的數(shù)據(jù)
-
first
- first():發(fā)射第一個(gè)數(shù)據(jù)
first(Func1)
firstOrDefault(T)
注意:first和firstOrDefault是阻塞式的,它會(huì)等待源Observable發(fā)射完成后才發(fā)射數(shù)據(jù)。 - takeFirst(Func1): 和first類似
注意:若源Observable未發(fā)射任何數(shù)據(jù),first會(huì)拋出NoSuchElementException,takeFirst會(huì)返回一個(gè)空的Observable - single():和first類似
注意:如果源Observable發(fā)射的不是唯一的數(shù)據(jù),則會(huì)拋出NoSuchElementException -
single(Func1)
-
singleOrDefault(T)
-
singleOrDefault(Func1,T)
- first():發(fā)射第一個(gè)數(shù)據(jù)
-
ignoreElements
-
ignoreElements():忽略數(shù)據(jù)的發(fā)送,只會(huì)發(fā)送通知(onComplete(),onError())
-
-
last
- last():發(fā)射最后一個(gè)數(shù)據(jù),用法同first
last(Func1)
lastOrDefault(T)
- last():發(fā)射最后一個(gè)數(shù)據(jù),用法同first
-
sample/throttleLast
- sample(long,TimeUnit) / throttleLast(long,TimeUnit)
sample(long,TimeUnit,Scheduler) / throttleLast(long,TimeUnit,Scheduler)
注意:最后的數(shù)據(jù)在指定的時(shí)間段內(nèi)提前結(jié)束,則會(huì)丟失 -
sample(Observable)
-
throttleFirst(long,TimeUnit)
throttleFirst(long,TimeUnit,Scheduler)
- sample(long,TimeUnit) / throttleLast(long,TimeUnit)
-
skip
-
skip(int):過(guò)濾開(kāi)始的n個(gè)數(shù)據(jù)
-
skip(long,TimeUnit)
skip(long,TimeUnit,Scheduler)
-
-
skipLast
-
skipLast(int):過(guò)濾最后的n個(gè)數(shù)據(jù)
-
skipLast(long,TimeUnit)
skipLast(long,TimeUnit,Scheduler)
-
-
take
- take(int)/limit(int):發(fā)射前面n個(gè)數(shù)據(jù)
注意:假設(shè)Oberserable在完成之前發(fā)射的數(shù)量為m,若m<n,不會(huì)拋異常或調(diào)用onError(),發(fā)射m個(gè)數(shù)據(jù) -
take(long,TimeUnit):發(fā)射指定時(shí)間段的數(shù)據(jù)
take(long,TimeUnit,Scheduler)
- take(int)/limit(int):發(fā)射前面n個(gè)數(shù)據(jù)
takeLast
- takeLast(n):發(fā)射最后n個(gè)數(shù)據(jù)

注意:會(huì)延遲發(fā)射直到源Observable 發(fā)射完成
- takeLast(long,TimeUnit):發(fā)射指定時(shí)間段的數(shù)據(jù)
takeLast(long,TimeUnit,Scheduler)

- takeLastBuffer(int):和takeLast類似,只是會(huì)把數(shù)據(jù)作為一個(gè)list一起發(fā)射

- takeLastBuffer(long,TimeUnit)
takeLastBuffer(long,TimeUnit,Scheduler)
takeLastBuffer(int,long,TimeUnit)
takeLastBuffer(int,long,TimeUnit,Scheduler)



















