我有此函数,它获取一个参数并首先检查其值。如果为null,则从fisrtFun()的结果获取其值,该结果返回Single 。
之后,该参数为null或不为null,则返回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)
}
}