【问题标题】:Converting Flowable<List<T>> to Single<Boolean>将 Flowable<List<T>> 转换为 Single<Boolean>
【发布时间】:2018-07-02 21:44:56
【问题描述】:

我在@Dao 中有一个函数。让我们称该类为DaoClass

abstract fun getData() : Flowable&lt;List&lt;Data&gt;&gt;

现在,我想检查返回的数据列表是否为空。我挖掘了 DaoClass_Impl (在构建时生成),我发现 Flowable 不会为空。所以,

getData().isEmpty 将始终返回 false。

所以我所做的是 getData().singleOrError().map{it.isEmpty()} 如果返回的列表实际上是空的,则返回。

但是我遇到了问题,因为值没有被发出。

【问题讨论】:

  • Dao 为您提供新版本的数据,只要您的查询源更新。您确定要将此数据流转换为 Single 而不是 Flowable 以每次检查列表是否为空?
  • @MarcinJedynak 必须使用 Observables.zip,为此我需要 Single

标签: android kotlin android-room rx-kotlin


【解决方案1】:

您需要检查 singleOrError 的实际作用:

如果此 Flowable 仅发射单个项目,则返回一个发射此 Flowable 发射的单个项目的 Single,否则如果此 Flowable 完成但未发射任何项目,则将发出 NoSuchElementException 信号,如果此 Flowable 发射多个项目,则将发出 IllegalArgumentException 信号。

您要查找的是firstOrError,它只返回发出的第一个值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-20
    • 1970-01-01
    • 2019-04-05
    • 1970-01-01
    • 2016-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多