当前位置: 首页 > 知识库问答 >
问题:

RxJava2:替代rx.Observable方法第一(谓词)

丌官飞章
2023-03-14

我想使用RxJava,但无法提出替代方法

public final Observable<T> first(Func1<? super T,java.lang.Boolean> predicate)

在 RxJava2.

我想做的是:

return io.reactivex.Observable
    .concat(source1, source2, source3, source4)
    .first(obj -> obj != null);

参数 source1 到 source4 是我连接的第一个可观察实例,我希望结果可观察只发出第一个不为空的项,但这当然会失败,因为 io.reactivex. 可观察

如果我在RxJava2中有任何选项,或者最好坚持使用RxJava1,我有什么选择?

共有3个答案

禄和宜
2023-03-14

first被重命名为firstElement。此外,Rx 2.0不支持流上的空值。

Rx.Java 2.0 文档 - 1.0 x 2.0

吉栋
2023-03-14

RxJava2不允许像其他人建议的那样发出空值。

但是,如果确定第一个要返回的值的谓词不是检查null,那么您可以考虑使用< code >。在< code >之前过滤。first(需要指定一些默认值)或< code >。firstOrError(如果没有匹配项,则发出OnError)

return io.reactivex.Observable
    .concat(source1, source2, source3, source4)
    .filter(obj -> obj == someAnotherObj)
    .firstOrError();
范承教
2023-03-14

考虑使用<code>Maybe</code>而不是可为null类型的<code>Observable</code>(它不适用于RxJava2)。然后使用<code>Maybe。concat</code>以仅将发出的项作为<code>Flowable</code>获取。只需使用<code>first</code>获取第一个元素以返回<code>Single</code>(您必须指定一个默认项)或<code>firstElement</code>以返回<code<Maybe>:

Maybe.concat(source1, source2, source3, source4)
    .firstElement()
 类似资料:
  • 本文向大家介绍写一个方法代替eval相关面试题,主要包含被问及写一个方法代替eval时的应答技巧和注意事项,需要的朋友参考一下 const myEval = function (fn) { const Fn = Function; return new Fn('return ' + fn)(); }

  • 问题内容: 我正在使用StAX创建一个很大的xml文档。到目前为止,我一直使用IndentingXMLStreamwriter类来获取格式正确的文档。几天前,我们使用旧的jdk版本(6.26)设置了一个jenkins服务器,在该版本上我遇到了构建错误。 我认为由于安装了jdk版本而找不到该软件包。由于不同的原因,这不能更改(顺便说一句,是否有人知道添加了此软件包(com.sun.xml.inter

  • 问题内容: PHP_excel是否有其他选择可以以自定义格式“导出到XLSX / XLS”文件? 问题答案: 我编写了一个非常简单的类,用于导出到“ Excel XML”(又名SpreadsheetML)。对于最终用户而言,它不如XSLX方便(取决于文件扩展名和Excel版本,他们可能会收到警告消息),但使用起来比XLS或XLSX容易得多。

  • 问题内容: 对于像 制作视频的人相信 在许多情况下,冬眠过大 基本的sql是一种很好的语言,它可以将很多冬眠抽象化 我想听听他们如何比较,以及每个人的优缺点。 问题答案: 在这里,您可以找到Java ORM和持久性解决方案的详尽列表。并非所有以下Hibernate / JPA方法都遵循,其中某些方法在设计上相当容易。 当然,该站点上没有列出解决方案,例如带有模板的Spring JDBC等 。对于需

  • 问题内容: 我目前有这样的代码: 但是,这可能会在将来导致难以发现的错误,因为读者可能不会注意到上面出现的错误。或者,贡献者可能会错误地添加,而忘记添加。 我如何避免这种陷阱? 问题答案: 这样,实际上是一个“全局”。可以从任何地方对其进行读写。 与字典的替代方法相比,我更喜欢这种方法,因为它可以自动完成变量名。

  • 我一直在通过Netbeans使用CodeNameOne设计一个应用程序,并遇到了一些问题,特别是“找不到符号”编译错误。经过进一步的研究,我发现这是由于CNO不支持某些库/杂项。 我想知道是否有其他方法可以使用以下库/执行任务: (从文件读取)导入java.io.file;符号:类文件位置:package java.io (抛出FileNotFoundException)导入java.io.Fil