如何使用平面图rxJava执行并发任务

时间:2019-05-07 14:40:45

标签: android rx-java rx-java2 rx-android flatmap

我想用不同的参数调用两次函数,并且该函数根据参数返回一组值。我想整理两个结果并对其进行处理。

我抬起头来,应该使用平面地图来做到这一点,但是我不确定该如何做。请您指导我。

getCompaniesData(pageNumber,perPage)//返回100个公司

getCompaniesData(pageNumber,perPage)//返回100家公司

整理两个答复-总计200家公司

做点什么。

当前这是我返回的带参数(1,100)的内容,一旦获得数据,我想使用带参数(2,100)调用相同的函数,这将给我另一组数据并将其组合并对其进行处理

mHighLightsPresenter. getCompaniesData(1, 1000).doOnNext(fetchCompaniesResponse -> {
                    if(fetchCompaniesResponse != null)
                    {
                        List<com.dopay.onboarding.data.bean.Company> companies = fetchCompaniesResponse.getCompanies();
                        if (companies != null && !companies.isEmpty()) {
                            showCompaniesDialog(companies);
                        }

                        Toast.makeText(getContext(), "companies response is not null", Toast.LENGTH_LONG).show();
                    }
                }).subscribe();

您的建议非常有帮助

谢谢 R

1 个答案:

答案 0 :(得分:0)

首先检查flatMap操作员的文档,上面写着:

  

将一个Observable发出的项目转换为Observable,然后将这些项目的排放展平为一个Observable。

如何使用不同的参数调用同一函数?

您可以提取方法getCompaniesData并以这种方式将两个整数(或适当的类)传递给它:

Observable<T> getCompaniesData(Param param);

如何合并不同的结果?

您可以将运算符flatMap应用于已定义方法发出的多个Observable

Observable<T> foo(Param... params) {
    return Observable.fromArray(params)
        .flatMap(this::getCompaniesData)
        ...

}