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

RxJavarx.exceptions.MissingBackpressureException与过滤器和映射

太叔凌龙
2023-03-14


我刚开始使用RxJava/RxAndroid,在理解如何正确处理背压方面有一些问题。

我有一个文件扫描器,可以扫描目录并发出文件。应尽快处理这些文件,并且不跳过任何文件。

所以管道看起来像这样:<代码>可观察

不幸的是,我收到了rx。例外情况。缺少背压异常错误。所以我读了关于背压的书,如果我理解正确的话,无损耗选项只是缓冲区和窗口。

我试过了BackPressureBuffer()、buffer()和window()。虽然所有的onBackpressureX()命令似乎都没有效果,但buffer()将项目分组到一个列表中

  1. 我应该如何过滤这些组?过滤器(

一些反馈甚至提示会有很大帮助并受到赞赏。


共有1个答案

宰父学
2023-03-14

我想我找到了问题的解决方案:此代码不起作用:

Observable<File> task = scanner.getProcessDirectoryTask(mountPoint);
Subscription _subscription = task
       .subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .onBackpressureBuffer(10000)
        .filter(new Func1<File, Boolean>() {
            @Override
            public Boolean call(File file) {
                return file.getAbsolutePath().endsWith("xyz");
            }
        })
        .buffer(100)
        .subscribe(new Observer<List<File>>() { /*whatever you want to do*/ }

但是,此代码正在运行:

Observable<File> task = scanner.getProcessDirectoryTask(mountPoint);
Subscription _subscription = task
        .onBackpressureBuffer(10000)
        .filter(new Func1<File, Boolean>() {
            @Override
            public Boolean call(File file) {
                return file.getAbsolutePath().endsWith("xyz");
            }
        })
        .buffer(100)
       .subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe(new Observer<List<File>>() { /*whatever you want to do*/ }

因此,订阅()观察()的顺序似乎有很大的不同!

我的第三个问题有点离题,但仍然悬而未决。也许有人可以对此发表评论。

 类似资料:
  • 我从事elasticsearch,我尝试混合两个工作查询。第一个是“and filter”,第二个是“bool filter”,但我失败了。 我的查询是从用户交互界面动态生成的。 “和过滤器”: 我需要“和过滤器”来查询数据,例如,字段必须等于“非洲”或“亚洲”或为空。这是一个工作查询的示例: 此查询工作正常,结果如下: 现在我需要用字段“D\u TYPESTATUS”来限制结果数据,该字段必须与

  • 假设我有一张房间清单 每个房间都有一份人员名单。 使用java8 streams,我想迭代房间列表,获取所有人员,在每个节点上执行一些方法(doSomething()),并获取所有过滤对象的列表。 这是使用java 8的最佳实践吗?

  • 我所拥有的 预期产出 实际产量 这只是一个例子。在我的真实代码中,我正在对我的全局状态(useContext, useReduer)执行删除操作。 是一个ID数组。

  • 问题内容: “过滤后的查询和过滤器”与“根查询和过滤器”之间有什么区别吗?例如 情况1: 情况2: 我在http://elasticsearch-users.115913.n3.nabble.com/Filtered-query-vs-using- filter-outside-td3960119.html中 找到了此讨论,但所引用的URL是404,并且解释过于简洁我。 请示教或提供指出这些区别的

  • 我正在用Java8为一个文件编写一个解析器。使用读取该文件,并返回一个顺序的。 每一行都映射到一个数据对象,如下所示: 现在我们可以将流中的每一行映射到相应的结果: 但是,流现在包含要删除的值: 如我在中所知,如果需要结果,我如何组合映射/筛选操作?

  • 问题内容: 我正在研究一个React项目,以学习React。 在组件的render方法中,当我用于遍历值并返回组件数组时,一切都会按预期进行。 但是当我使用时: 我得到了错误(我已经研究过) 我不明白为什么会抛出此错误vs ?有什么独特的反应可以吗?两者都返回一个数组。 问题答案: 不允许您将数据转换为组件。那是工作。 您应该先过滤,然后再链接地图调用: 如果您希望避免在的列表上进行第二次传递,那