Я пытаюсь написать функцию преобразования, которая используется с 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
, ....?