rx - Условное условие flatMap / add для текущего логического выражения - PullRequest
0 голосов
/ 02 сентября 2018

Мне нужно показать представление об ошибке, если статус - ошибка, и 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<Boolean>, но может возвращать что-то еще, например Single<Boolean>.

РЕДАКТИРОВАТЬ: Другой вопрос, если call.isEmpty() возвращает Flowable<Boolean> как я могу объединить два потока (два Flowable<Boolean> s - states.isError и call.isEmpty()) и сопоставить его с одним Flowable<Boolean> так это одно условие?

Ответы [ 2 ]

0 голосов
/ 03 октября 2018

Может быть, вы можете использовать что-то вроде этого

val errorVisible = states.asFlowable()
        .onErrorReturn { true }
        .flatMap { Flowable.just(it.status == Status.ERROR) }
0 голосов
/ 02 сентября 2018

Вы можете использовать блок when или if:

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