Learning Buffer, Throttle, and Window operators
So far, we have learned about backpressure. We slowed down the source, dropped items, or used buffer, which will hold items until the consumer consumes it; however, will all these suffice? While handling backpressure at the downstream is not a good solution always, we cannot always slow down the source as well.
While using Observable.interval
/Flowable.interval
, you cannot slow down the source. A stop gap could be some operators that would somehow allow us to process the emissions simultaneously.
There are the three operators that could help us in that way:
Buffer
Throttle
Window
The buffer() operator
Unlike the onBackPressureBuffer()
operator, which buffers emissions until the consumer consumes, the buffer()
operator will gather emissions as a batch and will emit them as a list or any other collection type.
So, let's look at this example:
fun main(args: Array<String>) { val flowable = Flowable.range(1,111)//(1) flowable.buffer...