【问题标题】:How to use a flatmap rxJava to perform concurrent task如何使用平面图 rxJava 执行并发任务
【发布时间】:2019-09-25 06:21:04
【问题描述】:

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

我查了一下,我应该使用 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();

您的建议很有帮助

谢谢 回复

【问题讨论】:

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


    【解决方案1】:

    首先查看flatMapoperator 的文档,上面写着:

    将 Observable 发射的项目转换为 Observable,然后将这些项目的发射扁平化为单个 Observable。

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

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

    Observable&lt;T&gt; getCompaniesData(Param param);

    如何组合不同的结果?

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-23
      • 1970-01-01
      • 2021-04-08
      • 2022-10-15
      • 1970-01-01
      相关资源
      最近更新 更多