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) .switchMap { val randDelay = Random().nextInt(10) return@switchMap Observable.just(it) .delay(randDelay...