In this chapter, you learned how to leverage buffering, windowing, throttling, and switching to cope with a rapidly emitting Observable. Ideally, we should leverage Flowable and backpressure when we see that an Observable is emitting faster than an Observer can keep up with, which we will learn about in the next chapter. But for situations where backpressure cannot work, such as user inputs or timer events, you can leverage one of the four categories of operations—buffering, windowing, throttling, or switching—to limit how many emissions are passed downstream.
In the next chapter, we will learn about handling backpressure using Flowable, which provides a more proactive way to cope with a common case of rapid emissions that overwhelm an Observer.