Understanding switchMap operator

The switchMap operator is really interesting. It listens to all the emissions of the source producer (Observable/Flowable) asynchronously, but emits only the latest one within the timeframe. Let's explain it a bit more.

When the source Observable emits more than one item consecutively before the switchMap has emitted any of them, switchMap will take the last one and discard any emission that came in between. Let's take an example to understand it better:

 fun main(args: Array<String>) { println("Without delay") Observable.range(1,10) .switchMap { val randDelay = Random().nextInt(10) return@switchMap Observable.just(it)//(1) } .blockingSubscribe { println("Received $it") } println("With delay") Observable.range(1,10) ...

Get Reactive Programming in Kotlin now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.