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