``` fun <T> Observable<Observable<T&gt...
# coroutines
e
Copy code
fun <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
            }
        }
    }
}