rxFlowable

fun <T : Any> rxFlowable(context: CoroutineContext = EmptyCoroutineContext, block: suspend ProducerScope<T>.() -> Unit): Flowable<T>(source)

Creates cold flowable that will run a given block in a coroutine. Every time the returned flowable is subscribed, it starts a new coroutine.

Coroutine emits (ObservableEmitter.onNext) values with send, completes (ObservableEmitter.onComplete) when the coroutine completes or channel is explicitly closed and emits error (ObservableEmitter.onError) if coroutine throws an exception or closes channel with a cause. Unsubscribing cancels running coroutine.

Invocations of send are suspended appropriately when subscribers apply back-pressure and to ensure that onNext is not invoked concurrently.

Coroutine context can be specified with context argument. If the context does not have any dispatcher nor any other ContinuationInterceptor, then Dispatchers.Default is used. Method throws IllegalArgumentException if provided context contains a Job instance.

Note: This is an experimental api. Behaviour of publishers that work as children in a parent scope with respect