定期發(fā)射Observable最近發(fā)射的數(shù)據(jù)項(xiàng)
http://wiki.jikexueyuan.com/project/rx-docs/images/operators/sample.c.png" alt="sample" />
Sample
操作符定時(shí)查看一個(gè)Observable,然后發(fā)射自上次采樣以來它最近發(fā)射的數(shù)據(jù)。
在某些實(shí)現(xiàn)中,有一個(gè)ThrottleFirst
操作符的功能類似,但不是發(fā)射采樣期間的最近的數(shù)據(jù),而是發(fā)射在那段時(shí)間內(nèi)的第一項(xiàng)數(shù)據(jù)。
RxJava將這個(gè)操作符實(shí)現(xiàn)為sample
和throttleLast
。
注意:如果自上次采樣以來,原始Observable沒有發(fā)射任何數(shù)據(jù),這個(gè)操作返回的Observable在那段時(shí)間內(nèi)也不會發(fā)射任何數(shù)據(jù)。
http://wiki.jikexueyuan.com/project/rx-docs/images/operators/sample.png" alt="sample" />
sample
(別名throttleLast
)的一個(gè)變體按照你參數(shù)中指定的時(shí)間間隔定時(shí)采樣(TimeUnit
指定時(shí)間單位)。
sample
的這個(gè)變體默認(rèn)在computation
調(diào)度器上執(zhí)行,但是你可以使用第三個(gè)參數(shù)指定其它的調(diào)度器。
http://wiki.jikexueyuan.com/project/rx-docs/images/operators/sample.o.png" alt="sample" />
sample
的這個(gè)變體每當(dāng)?shù)诙€(gè)Observable發(fā)射一個(gè)數(shù)據(jù)(或者當(dāng)它終止)時(shí)就對原始Observable進(jìn)行采樣。第二個(gè)Observable通過參數(shù)傳遞給sample
。
sample
的這個(gè)變體默認(rèn)不在任何特定的調(diào)度器上執(zhí)行。
http://wiki.jikexueyuan.com/project/rx-docs/images/operators/throttleFirst.png" alt="throttleFirst" />
throttleFirst
與throttleLast/sample
不同,在每個(gè)采樣周期內(nèi),它總是發(fā)射原始Observable的第一項(xiàng)數(shù)據(jù),而不是最近的一項(xiàng)。
throttleFirst
操作符默認(rèn)在computation
調(diào)度器上執(zhí)行,但是你可以使用第三個(gè)參數(shù)指定其它的調(diào)度器。