僅在過了一段指定的時間還沒發(fā)射數(shù)據(jù)時才發(fā)射一個數(shù)據(jù)
http://wiki.jikexueyuan.com/project/rx-docs/images/operators/debounce.c.png" alt="debounce" />
Debounce操作符會過濾掉發(fā)射速率過快的數(shù)據(jù)項。
RxJava將這個操作符實現(xiàn)為throttleWithTimeout和debounce。
注意:這個操作符會會接著最后一項數(shù)據(jù)發(fā)射原始Observable的onCompleted通知,即使這個通知發(fā)生在你指定的時間窗口內(nèi)(從最后一項數(shù)據(jù)的發(fā)射算起)。也就是說,onCompleted通知不會觸發(fā)限流。
http://wiki.jikexueyuan.com/project/rx-docs/images/operators/debounce.png" alt="debounce" />
throtleWithTimeout/debounce的一個變體根據(jù)你指定的時間間隔進行限流,時間單位通過TimeUnit參數(shù)指定。
這種操作符默認在computation調(diào)度器上執(zhí)行,但是你可以通過第三個參數(shù)指定。
http://wiki.jikexueyuan.com/project/rx-docs/images/operators/debounce.f.png" alt="debounce" />
debounce操作符的一個變體通過對原始Observable的每一項應(yīng)用一個函數(shù)進行限流,這個函數(shù)返回一個Observable。如果原始Observable在這個新生成的Observable終止之前發(fā)射了另一個數(shù)據(jù),debounce會抑制(suppress)這個數(shù)據(jù)項。
debounce的這個變體默認不在任何特定的調(diào)度器上執(zhí)行。