首页 > 解决方案 > 如何从 RxJava 中的 Single 获取返回值

问题描述

我想在 RxJava 中从 Single.fromCallable{} 返回真或假。有没有其他方法可以实现它

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
                }
            })
}

提前致谢:)

标签: androidrx-javaobservable

解决方案


不,你不能。在 subscribe 方法中不可能返回值。看看它的实现细节。

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

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

                    }
                })

可以看到 Consummer 类的方法 accept 是一种 void。显然,它不能返回值。

另一种方式,如果您更喜欢在订阅中操作布尔值,您可以创建 Single.fromCallable。


推荐阅读