我尝试编写一个用于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
, .... 的不同函数?