android - 如何从 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
}
})
}
提前致谢:)
解决方案
不,你不能。在 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。
推荐阅读
- php - 您将如何测试一个可以向查询添加数十个不同过滤器的类?
- git - 无法推送到 Github 或 Bitbucket
- javascript - MVC - 添加在客户端创建的新记录
- mule - Mulesoft 自定义策略转换扩展
- google-tag-manager - 通过 Google Tag Manager 中的计算组合两个数据层变量
- android - 具有固定纵横比的 ConstraintLayout 链
- perl - 在linux上自动替换主机密钥
- api - linkedin "此应用程序不允许创建应用程序令牌"
- javascript - CSS 将相似项目设置为与屏幕上最高项目相同的高度
- python-3.x - 切换音乐开/关 Kivy