sample容許您經過將序列劃分爲時間片斷,並從每片中取出一個值來稀疏序列。當每片結束時,將發出其中的最後一個值(若是有的話)。ios
輸出:git
時間的劃分不必定是統一的。您可使用信號可觀察來指定每一個部分的結尾。github
如下代碼與之前的代碼徹底相同spa
Throttling也用於稀疏序列。當生產者發出的值超出咱們想要的值時,咱們不須要每一個序列值,咱們能夠經過限制它來稀釋序列。3d
throttleFirst運算符過濾掉相對於已接受的值的值。接受值後,將在窗口期間拒絕值。一旦窗口過時,將接受下一個值並開始一個新窗口。blog
輸出:it
這裏,間隔每150ms發出一次。看做輸出的值相對於序列的開始以(i + 1)* 150ms發射。第一個項目以150毫秒發出,默認狀況下被接受。如今,在接下來的1000毫秒內被拒絕。以後的第一個項目是1200毫秒。一樣,項目在接下來的1000毫秒內被拒絕,所以下一個項目將在2250毫秒。io
throttleLast運算符以固定間隔而不是相對於最後一項來劃分時間。它會在每一個窗口中發出最後一個值,而不是它後面的第一個值。ast
輸出:im
這裏,窗口以0ms的序列建立開始。該窗口在1000ms到期,該窗口中的最後一個值爲900ms。下一個窗口持續1000ms直到2000ms。該窗口中的最後一項是1950.在下一個窗口中,項目是2850ms。
原文:https://github.com/Froussios/Intro-To-RxJava/blob/master/Part%203%20-%20Taming%20the%20sequence/5.%20Time-shifted%20sequences.md
下節繼續!
有什麼討論的內容,能夠加我公衆號: