我有一个方法,该方法执行对数据库的分页调用以收集数据并返回可观察到的结果。
public Observable search(string query,int limit,int offset)
我想构建一个执行所有分页搜索调用的方法,以加载我的查询的所有页面并返回Completable。在这种方法中,我想将所有页面连接到一个流中,执行响应式转换和操作并返回一个可完成的对象。
但是,由于我必须处理大量数据,所以我不想同时加载所有页面,不想将大量数据放入内存并用大量数据填充我的响应流,因为订阅者处理数据的速度比发布者慢。
因此,我想处理数据的第一页,然后通过对搜索方法的调用加载另一页,对其进行处理,然后继续直到处理完最后一页。
由于我处于无功状态,我不确定写一个循环来取一个好主意:获取数据,订阅将转换和处理数据的流。
我的方法是将一个流中的所有页面连接起来(使用Observable.concat之类的方法),然后处理该流。但是,我不想在内存中加载大量数据并获取outOfMemoryException。
在这种情况下我应该使用Flowable并使用背压吗?
使用rxjava2做到这一点的最佳方法是什么?