Если метод toBlockingFirst надежен? - PullRequest
0 голосов
/ 25 апреля 2018

Мой вопрос о методе toBlockingFirst().

Это надежный метод?т.е. могу ли я получить InterruptedException со сбоем

, если я позвоню утилизировать для одноразового использования из субкрина?

например:

.flatMap{ host ->
    val count = userRepository.getUsers(PrefProvider.currentTourCode)
        .map { it.size }
        .blockingFirst()
    if (count>2) {
        callSomething()
    } else {
        callElse()
    } 
}

Может кто-нибудь объяснить мне, пожалуйста?

1 Ответ

0 голосов
/ 25 апреля 2018

Если flatMap работает на RxJava Scheduler во время вызова blockingFirst, вы, вероятно, получите InterruptedException, завернутый в RuntimeException.Однако вы не должны вызывать блокирующие методы в обработчике, а создавать через flatMap

.flatMap{ host ->
    userRepository.getUsers(PrefProvider.currentTourCode)
        .flatMap { 
            if (it.size) {
               return callSomething()
            }
            return callElse()
        }
 }

В зависимости от того, что должны делать callSomething и callElse, и если они должны что-то возвращать, вы также можетеесть map doOnNext вместо flatMap там.

...