如何让这段用 RxKotlin 编写的代码块更干净,避免阻塞线程?
How to make this block of code written with RxKotlin cleaner and avoid blocking thread?
我有这个函数,它获取一个参数并首先检查它的值。如果它为空,则从 fisrtFun() 的结果中获取其值,其中 returns 一个 Single< String>.
在该参数是否为 null 之后,它 returns secondFun() 获取该参数作为输入的结果
fun getUserEvents(id: String?): Single<String> {
return if (userId == null) {
firstFun().flatMap { id->
secondFun(id)
}
} else {
secondFun(id)
}
}
但如您所见,我使用了 if-else 块并多次编写了 secondFun()
所以我试着让它更干净
fun getUserEvents(id: String?): Single<String> {
val id = userId ?: fisrtFun().blockingGet()!!
return secondFun(id)
}
我想知道是否有更好的方法实现这个功能而不使用blockingGet()来避免阻塞线程
像这样的东西应该可以工作:
fun getUserEvents(id: String?): Single<String> {
val idSingle = if (userId == null) firstFun() else Single.just(id)
return idSingle.flatMap { id ->
secondFun(id)
}
}
我有这个函数,它获取一个参数并首先检查它的值。如果它为空,则从 fisrtFun() 的结果中获取其值,其中 returns 一个 Single< String>.
在该参数是否为 null 之后,它 returns secondFun() 获取该参数作为输入的结果
fun getUserEvents(id: String?): Single<String> {
return if (userId == null) {
firstFun().flatMap { id->
secondFun(id)
}
} else {
secondFun(id)
}
}
但如您所见,我使用了 if-else 块并多次编写了 secondFun()
所以我试着让它更干净
fun getUserEvents(id: String?): Single<String> {
val id = userId ?: fisrtFun().blockingGet()!!
return secondFun(id)
}
我想知道是否有更好的方法实现这个功能而不使用blockingGet()来避免阻塞线程
像这样的东西应该可以工作:
fun getUserEvents(id: String?): Single<String> {
val idSingle = if (userId == null) firstFun() else Single.just(id)
return idSingle.flatMap { id ->
secondFun(id)
}
}