Kotlin rx-条件平面映射/将条件添加到可流动布尔值

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

如果状态为error,我需要显示error视图,并且
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()在哪里?看见