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

在RxJava中从2个可观察到的项目列表中创建一个过滤后的可观察到的

伍耀
2023-03-14

我正在开发一个功能,我需要根据本地数据库数据过滤掉网络响应数据。

例如,我的网络层返回一个项目列表,我的数据库层返回一个可观察的ID列表。现在,我只想从网络层返回那些id与数据库层响应中的任何人都匹配的对象。

下面的代码从网络获取数据并将结果保存到数据库(缓存)。

factory.getRemoteDataStore()
                .searchForVenues(query)
                .toObservable()
                .distinctUntilChanged()
                .flatMap { venues ->
                    factory.getCacheDataStore()
                            .saveVenues(venues)
                            .andThen(Observable.just(venues))
                }

我还有一个方法可以返回需要过滤的场馆列表

factory.getCacheDataStore().getDislikedVenues()

现在,我如何扩展前面的链,使用getDislikedVinces()observate从网络响应的响应中过滤它们?

很抱歉提出这样的问题,我真的很难回答。

共有1个答案

裴和怡
2023-03-14

这样做的一种方法是

factory.getCacheDataStore().getDislikedVenues()
    .flatMap { dislikedItems -> 
        factory.getRemoteDataStore()
            .searchForVenues(query)
            .toObservable()
            .distinctUntilChanged()
            .flatMapIterable { it }
            .filter { !dislikedItems.contains(it.id) }
            .toList()
            .toObservable()
    }
    .flatMap { venues ->
        factory.getCacheDataStore()
            .saveVenues(venues)
            .andThen(Observable.just(venues))
    }

P、 据我所知,工厂。getRemoteDataStore()。SearchForVinces(查询)返回单个或可能的。在这种情况下,distinctUntilChanged()不起作用,因为它依赖于多个发射(onNext()),但单个或可能只能发射一个结果。

 类似资料:
  • 我有一个id列表,并且有一个方法,它接受id并返回可观察的 假设我有用户id(1),我需要使用此方法更新他的配置文件

  • 问题内容: 给定汽车清单(),我可以这样做: 有没有办法我可以从一个到一个序列? 像没有参数的东西 问题答案: 您可以这样映射到: 请注意,flatMapping可能不会保留源可观察的顺序。如果订单对您很重要,请使用。

  • 假设我有一个,它从网络获取数据并发出数据,如果我订阅这个observable,每次它试图从网络请求数据时,它会很重。 我想创建BehaviorSubject并将其连接到observableA,这样任何其他线程/对象都将订阅BehaviorSubject以获取最新发出的数据。 到目前为止,我还不能用它来编码。我不能创建空的BehaviorSubject并在observableA内调用,因为它们彼此不

  • 我正在从事一个涉及Hystrix的项目,我决定使用RxJava。现在,忘记Hystrix的其余部分,因为我相信主要问题是我完全搞砸了正确编写可观察代码。 需要:我需要一种方法来返回一个代表多个可观察对象的可观察对象,每个可观察对象都运行一个用户任务。我希望该可观察对象能够返回任务的所有结果,甚至错误。 问题:可观测流会因错误而消亡。如果我有三个任务,而第二个任务引发了一个异常,那么即使第三个任务成

  • 问题内容: 我正在尝试在JavaFX 8中创建一个,需要一个。我不知道如何创建一个……但是,如果我尝试: 我收到一个错误消息,说它无法实例化,因为它是抽象的。可以理解的 如果我查看该文档,可以看到,但是我做不到: 因为没有适用的构造函数。显然我需要传递给,这很奇怪,因为我无法创建。 我不确定如何解密。如果我尝试 出于绝望,我得到了一个更加复杂的错误。 也不起作用。它以某种方式起作用(但显然使用了不