Kotlin rx-条件平面映射/将条件添加到可流动布尔值
如果状态为error,我需要显示error视图,并且Kotlin rx-条件平面映射/将条件添加到可流动布尔值,kotlin,rxjs,rx-java,rx-java2,rx-kotlin,Kotlin,Rxjs,Rx Java,Rx Java2,Rx Kotlin,如果状态为error,我需要显示error视图,并且call.isEmpty()返回true 有没有更好的方法来实现这一结果 val errorVisible = states.asFlowable() .map { it.status == Status.ERROR } .flatMap { isError -> if (isError) call.isEmpty() else Flowable.just(false) } cal
call.isEmpty()
返回true
有没有更好的方法来实现这一结果
val errorVisible = states.asFlowable()
.map { it.status == Status.ERROR }
.flatMap { isError ->
if (isError) call.isEmpty()
else Flowable.just(false)
}
call.isEmpty()
返回Flowable
,但可以返回类似Single
的其他内容
编辑:另一个问题,如果
call.isEmpty()
返回Flowable
如何合并两个流(两个Flowable
s-状态。isError
和call.isEmpty()
)并将其映射到一个可流动的,因此这是一个条件?当或如果块:
val errorVisible = states.asFlowable()
.flatMap {
when(it.status) {
Status.ERROR -> call.isEmpty()
else -> Flowable.just(false)
}
}
也许你可以用这样的东西
val errorVisible = states.asFlowable()
.onErrorReturn { true }
.flatMap { Flowable.just(it.status == Status.ERROR) }
你可以打破这个条件
.flatMap {
if (it.isEmpty()) {
Observable.empty()
} else {
Observable.just(true)
}
}
好吧,如果这是您想要的,您不需要使用map
并将这两个条件都放入flatMap
asking@martin是的,在这种情况下,我可以跳过map
。但是我正在寻找一种不同的,可能更好的方法来做同样的事情,通过改变flatMap
。我的最终目标是在isError
和call.isEmpty()
时返回Flowable
。如果有,我会寻找更多的RX方法。顺便说一句,我还添加了一个新问题。call.isEmpty()在哪里?看见