Как получить отдачу от single в rxjava

Я хочу вернуть true или false из Single.fromCallable {} в RxJava. Есть ли другой способ добиться этого?

private isBlockListAvailable():Boolean
{

Single.fromCallable {
        //** data base query
        blockRepo.getAllBlocks()
    }.subscribeOn(Schedulers.io())
            .subscribe({blockList : List<BlockList>
                if (blockList> 0) {
                    return true // how can i achieve this
                } else {
                   return false // how can i achieve this
                }
            })
}

Заранее спасибо:)

ты не сможешь это сделать. Вы, вероятно, захотите использовать .subscribe() в методе, который вместо этого вызывает isBlockListAvailable(), поэтому вы можете напрямую использовать логическое значение

Tim 10.09.2018 09:31
0
1
1 488
1

Ответы 1

Нет, не можешь. Невозможно вернуть значение в методе подписки. Посмотрите подробно на его реализацию.

Single.subscribe(new Consumer<String>() {
                    @Override
                    public void accept(String s) throws Exception {

                    }
                }, new Consumer<Throwable>() {
                    @Override
                    public void accept(Throwable throwable) throws Exception {

                    }
                })

Вы можете видеть, что метод accept класса Consummer является типом void. Очевидно, он не может вернуть значение.

Другой способ - создать Single.fromCallable, если вы предпочитаете манипулировать логическим значением в подписке.

Другие вопросы по теме