Skip to content

Instantly share code, notes, and snippets.

@sallySalem
Created February 11, 2018 18:11
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sallySalem/061b02b922f8284d9abf51ea717a5e88 to your computer and use it in GitHub Desktop.
Save sallySalem/061b02b922f8284d9abf51ea717a5e88 to your computer and use it in GitHub Desktop.
Use Kotlin extension function instead of `compose()` in java to reuse the code of schedulers in Rxjava
//So no need to inject ioScheduler or computationScheduler
Observable.just("").applyIoScheduler()
Observable.just("").applyComputationScheduler()
Flowable.just("").applyIoScheduler()
Flowable.just("").applyComputationScheduler()
Single.just("").applyIoScheduler()
Single.just("").applyComputationScheduler()
Maybe.just("").applyIoScheduler()
Maybe.just("").applyComputationScheduler()
//Observable
fun <T> Observable<T>.applyIoScheduler() = applyScheduler(Schedulers.io())
fun <T> Observable<T>.applyComputationScheduler() = applyScheduler(Schedulers.computation())
private fun <T> Observable<T>.applyScheduler(scheduler: Scheduler) =
subscribeOn(scheduler).observeOn(AndroidSchedulers.mainThread())
//Flowable
fun <T> Flowable<T>.applyIoScheduler() = applyScheduler(Schedulers.io())
fun <T> Flowable<T>.applyComputationScheduler() = applyScheduler(Schedulers.computation())
private fun <T> Flowable<T>.applyScheduler(scheduler: Scheduler) =
subscribeOn(scheduler).observeOn(AndroidSchedulers.mainThread())
//Single
fun <T> Single<T>.applyIoScheduler() = applyScheduler(Schedulers.io())
fun <T> Single<T>.applyComputationScheduler() = applyScheduler(Schedulers.computation())
private fun <T> Single<T>.applyScheduler(scheduler: Scheduler) =
subscribeOn(scheduler).observeOn(AndroidSchedulers.mainThread())
//Maybe
fun <T> Maybe<T>.applyIoScheduler() = applyScheduler(Schedulers.io())
fun <T> Maybe<T>.applyComputationScheduler() = applyScheduler(Schedulers.computation())
private fun <T> Maybe<T>.applyScheduler(scheduler: Scheduler) =
subscribeOn(scheduler).observeOn(AndroidSchedulers.mainThread())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment