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
下节继续!
有什么讨论的内容,能够加我公众号: