Я пытаюсь написать функцию преобразования, которая используется с compose()
для уменьшения стандартного кода.Это довольно просто, как это:
fun <R> withSchedulers(): ObservableTransformer<R, R> {
return ObservableTransformer {
it.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
}
}
Так что каждый раз, когда я хочу подписаться на что-либо на ioThread
и прослушать результат на mainThread
, это всего лишь несколько строк кода:
Observable.just(1)
.compose(MyUtilClass.withSchedulers())
.subscribe()
Но не только Observable
, но у нас также есть Single
, Completable
, Maybe
и Flowable
.Поэтому каждый раз, когда я хочу объединить их с моей withSchedulers()
функцией, я должен преобразовать ее в новый тип (чего я не ожидаю).
Например,
Completable.fromAction {
Log.d("nhp", "hello world")
}//.compose(MyUtilClass.withSchedulers()) <-- This is not compiled
.toObservable() <--- I have to transform it into Observable
.compose(MyUtilClass.withSchedulers())
.subscribe()
Итак, мой вопрос, есть ли способ написать вышеуказанную функцию для использования с compose()
для любого вида Observable
(Single
,Completable
, ...)?Или мы должны написать различные функции, которые используют ObservableTransformer
, SingleTransformer
, ....?