elizarov
01/17/2017, 10:30 AMfun <T> Observable<Observable<T>>.flatMap() = observable { // use a coroutine builder to build observable by yielding values
for (obs in this) { // use suspending iteration extension on observable
runSuspending { // run a fresh coroutine for each obs: Observable<T>
for (element in obs) { // now iterate on the element of obs in a separate coroutine
yield(element) // yield to result
}
}
}
}