android - 在 RxJava 中使用一个作为谓词组合两个可观察源
问题描述
我有 2 个可观察的来源,其中return和 other接受一个值并返回fetchProductList()
一个. 我需要组合流以将每个发射从第一个源馈送到第二个源,以便我可以返回所有发射,并将值作为列表返回。我尝试以这种方式编写它,但它看起来有点笨拙,有更好/更简单的方法吗?Observable<Datasource>
canInvite.execute()
Single<Boolean>
fetchProductList()
true
fetchProductList()
.map { dataSource -> dataSource.data }
.flatMap{ data ->
Observable.from(data.roles.map { role ->
canInvite.execute(role.key).map { canInvite ->
role to canInvite
}
})
}
.compose { it -> Single.merge(it) }
.filter { it -> it.second == true}
.map { it -> it.first }
.toList()
.subscribe {
解决方案
从我的角度来看,这是一个更清晰的解决方案:
fetchProductList()
.map { dataSource -> dataSource.data }
.flatMap { data ->
Observable.fromIterable(data.roles)
.flatMapMaybe { role ->
canInvite.execute(role.key)
.flatMapMaybe { result ->
if (result) Maybe.just(role) else Maybe.empty()
}
}
}
.toList()
.subscribe { result -> println(result) }
推荐阅读
- security - 跨平台检查二进制文件安全标志
- google-sheets - 如何在 Google 表格中基于彼此更新 2 个单元格
- git - Flyway 与 Git 集成并连接到 Snowflake
- amazon-web-services - 安装 yum-cron?或者运行 yum makecache fast error AWS EC2
- mysql - MariaDB 命令行在一段时间后停止响应
- c# - 如何使用 Windows 和/或 PowerShell 使用的接口和/或方法创建类库?
- angular - 在 Angular 中使用查询选择器
- python - Python在特定区间内选择随机数
- matlab - 在matalb中计算二维汉堡方程的能量场
- python - 我遇到 IndexError: list index out of range 错误,试图从 xml 文件中获取文本