rx-条件flatMap /将条件添加到可流动的布尔值

时间:2018-09-02 19:33:46

标签: kotlin rxjs rx-java rx-java2 rx-kotlin

如果状态为错误并且true返回val errorVisible = states.asFlowable() .map { it.status == Status.ERROR } .flatMap { isError -> if (isError) call.isEmpty() else Flowable.just(false) } ,我需要显示错误视图。

有没有更好的方法来达到这个结果?

call.isEmpty()

Flowable<Boolean>返回Single<Boolean>,但可以返回call.isEmpty()之类的其他内容。

编辑:另一个问题,如果Flowable<Boolean>返回Flowable<Boolean>,我如何合并两个流(两个states.isError-call.isEmpty()和{{ 1}})并将其映射到一个Flowable<Boolean>,这是一个条件吗?

3 个答案:

答案 0 :(得分:0)

您可以使用whenif块:

val errorVisible = states.asFlowable()
    .flatMap {
        when(it.status) {
            Status.ERROR -> call.isEmpty()
            else -> Flowable.just(false)
        }
    }

答案 1 :(得分:0)

也许您可以使用类似的东西

val errorVisible = states.asFlowable()
        .onErrorReturn { true }
        .flatMap { Flowable.just(it.status == Status.ERROR) }

答案 2 :(得分:0)

您可以打破条件

.flatMap {
  if (it.isEmpty()) {
    Observable.empty()
  } else {
    Observable.just(true)
  }
}