Junior — Senior
68
Сравнение поведения flatMap, switchMap и concatMap в RxJava
Компании, где спрашивали:
Условие задачи
Определите, какой порядок вывода будет получен при замене (method) на каждый из операторов — flatMap, switchMap и concatMap, используя приведённый ниже код.
val items = mutableListOf("a", "b", "c", "d")
val counter = AtomicInteger(4)
Observable.fromIterable(items). (method) { item ->
val delay = counter.decrementAndGet() * 10
Observable.just(item + "x").delay(delay.toLong(), TimeUnit.SECONDS)
}
.doOnNext { println(it) }
.subscribe()
flatMap – варианты ответов:
- "ax", "bx", "cx", "dx"
- "dx", "cx", "bx", "ax"
- "bx", "cx", "ax", "dx" Ответ: второй вариант.
switchMap – варианты ответов:
- "ax", "bx", "cx", "dx"
- "dx", "cx", "bx", "ax"
- "dx" Ответ: третий вариант.
concatMap – варианты ответов:
- "dx"
- "dx", "cx", "bx", "ax"
- "ax", "bx", "cx", "dx" Ответ: третий вариант.