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

带有toList的RxJava平面图

充运浩
2023-03-14

有人能解释一下如何在RxJava中通过平面图运算符传递完整信号吗?

如果flatMap操作符被注释,我可以得到从1到10的数字列表,这意味着toList将收到onComplete信号。但当我想在flatMap中进一步处理数据时,它会消耗一个完整的信号,而我无法得到任何结果。如何通过flatMap操作符传递onComplete信号?

我有以下简单的程序:

fun main(args: Array<String>) {
    notify()
            .flatMapMaybe { processData(it) }
            .toList()
            .subscribe(
                    { println("onNext: $it") },
                    { println("onError: ${it.message}") }
            )
}

fun notify(): Flowable<Int> {
    return Flowable.create({ emitter ->
        val random = Random()
        for (index in 1..10) {
            emitter.onNext(index)
            Thread.sleep((random.nextInt(500)).toLong())
        }
        emitter.onComplete()

    }, BackpressureStrategy.BUFFER)
}

fun processData(data: Int): Maybe<String> {
    return Maybe.fromCallable { data }
            .flatMap {
                if (it.mod(2) == 0) {
                    Maybe.fromCallable { it.toString() }
                } else {
                    Maybe.never()
                }
            }
}

共有1个答案

谷梁淇
2023-03-14

而不是返回Maybe。永远不要使用也许。empty()。根据文档,可能。empty()应该立即发布onComplete()

 类似资料:
  • 问题内容: 我的问题几乎与此类似: 从矩阵平滑表面图 只是我的工具集是matplotlib和numpy(到目前为止)。 我已经成功生成了X,Y和Z网格以进行绘制 但是,由于这些值非常跳跃,因此看起来非常糟糕。 我想使事情变得平滑,至少使顶点连接或看起来像那样。 我的数据是这样生成的:我有一个函数 它根据x生成矩阵,计算其y次幂,选择列和行的子集,并计算最大奇异值。因此,Z [x,y]是svOfMa

  • 我是RxJava的新手,经常被平面图函数弄糊涂。根据文档,平面图 有人能给出一个很好的用例吗?为什么要将原来的可观察对象转换为可观察对象(复数),然后将它们转换为单个可观察对象。 你为什么不直接用“地图”呢? 如果你举一个Android的例子,那就太棒了,否则纯Java就足够了。谢谢

  • 假设我有一个返回列表的博客帖子api 从列表创建可观察 将每个可观察拆分为

  • 我正在研究RxJava,为此我正在使用SQLite,编写一个帮助类,以便更容易地处理异步ContentResolver查询。例如,这是方法: 其中是接口: 我读过有关调度器的文档,但我不太确定是否是正确的选择。 如果我想为基本的操作实现类似的操作,我应该选择哪种调度程序?或,我会坚持使用...但不确定。 提前道谢。 万事如意,卢卡

  • 我有一个场景,我需要定期调用一个应用编程接口来检查结果。我使用来创建一个调用应用编程接口的间隔函数。 然而,我有背压的问题。在我下面的例子中,间隔中的每个记号都会创建一个新的单曲。理想的效果是仅在调用尚未进行时调用API 我可以使用过滤器变量来解决这个问题: 但是它看起来像一个黑客解决方案。我已经厌倦了在函数之后应用,但是它没有效果。 有什么建议吗?

  • 问题内容: 我很难理解如何使用RxJava构建缓存。我的想法是我需要从内存缓存中获取数据或从数据库(dynamoDb)加载。但是,该缓存应该在片段和/或线程之间共享。因此,我需要返回当前正在运行但尚未完成的现有可观察对象。这使线程可以赶上而不做不必要的工作。我是RxJava的新手,所以这是我作为草图考虑的内容(为简洁起见,缺少一些代码): } 是否有更好的方法可以通过RxJava实现(对缓存策略不