Rx java 显式类型参数Kotlin和RxJava
这是在Kotlin中使用RxJava的Rx java 显式类型参数Kotlin和RxJava,rx-java,kotlin,Rx Java,Kotlin,这是在Kotlin中使用RxJava的compose和ThreadTransformer的唯一可能的方法吗?我只是不喜欢函数中的部分。可以省略吗 override fun call(): Observable<MyType> { return Observable.just(getData()) .compose(threadTransformer.applySchedulers<MyType>()) } override fun cal
compose
和ThreadTransformer
的唯一可能的方法吗?我只是不喜欢
函数中的
部分。可以省略吗
override fun call(): Observable<MyType> {
return Observable.just(getData())
.compose(threadTransformer.applySchedulers<MyType>())
}
override fun call():可观察{
返回Observable.just(getData())
.compose(threadTransformer.applySchedulers())
}
可观察。compose
是解决Java中缺少扩展函数的一种方法。无需在Kotlin中使用Observable.compose
,因为它支持开箱即用的扩展功能:
// default schedulers
fun <T> Observable<T>.applySchedulers(): Observable<T> {
return subscribeOn(Schedulers.computation()).observeOn(AndroidSchedulers.mainThread())
}
// custom transformer
fun <T> Observable<T>.applySchedulers(transformer: ThreadTransformer): Observable<T> {
return compose(transformer.applySchedulers<T>())
}
override fun call(): Observable<MyType> {
return Observable.just(getData()).applySchedulers()
}
//默认调度程序
有趣的可观察。applySchedulers():可观察{
返回subscribeOn(Schedulers.computation()).observeOn(AndroidSchedulers.mainThread())
}
//自定义变压器
有趣的可观察。ApplyScheduler(transformer:ThreadTransformer):可观察{
返回组合(transformer.applySchedulers())
}
override fun call():可观察{
返回Observable.just(getData()).applySchedulers()
}
基于弗拉基米尔·米罗诺夫的回答。将此扩展到您的需要:
//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())
//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())
//Completable
//..
//可观察
有趣的可观察到的.applyIoScheduler()=applyScheduler(Schedulers.io())
有趣的可观察。applyComputationScheduler()=applyScheduler(Schedulers.computation())
可观察到的私有乐趣。applyScheduler(调度器:调度器)=
subscribeOn(调度器).observeOn(AndroidSchedulers.mainThread())
//单身
fun Single.applyIoScheduler()=applyScheduler(Schedulers.io())
fun Single.applycomputionscheduler()=applyScheduler(Schedulers.computation())
private fun Single.applyScheduler(调度程序:调度程序)=
subscribeOn(调度器).observeOn(AndroidSchedulers.mainThread())
//完全的
//..