Как использовать плоскую карту rxJava для выполнения параллельной задачи

Я хочу дважды вызвать функцию с разными параметрами, и функция возвращает набор значений на основе параметров. Я хочу сопоставить оба результата и что-то с этим сделать.

Я посмотрел вверх, и я должен использовать для этого плоскую карту, но я не уверен, как это сделать. Можете ли вы помочь мне в этом, пожалуйста.

getCompaniesData(pageNumber, perPage) // возвращает 100 компаний

getCompaniesData(pageNumber, perPage) // возвращает 100 компаний

Сопоставьте оба ответа - всего 200 компаний

Сделайте что-нибудь с этим.

В настоящее время это то, что у меня есть, которое возвращает с параметрами (1100). Как только я получу данные, я хочу вызвать ту же функцию с параметрами (2100), которая дает мне другой набор данных, объединить их оба и что-то с ними сделать.

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();

Ваши предложения очень полезны

Спасибо Р


person BRDroid    schedule 07.05.2019    source источник


Ответы (1)


Сначала проверьте документы flatMapoperator, там написано:

преобразуйте элементы, испускаемые Observable, в Observable, а затем объединяйте выбросы из них в один Observable.

Как вызвать одну и ту же функцию с разными параметрами?

Вы можете извлечь метод getCompaniesData и передать ему два целых числа (или соответствующий класс) следующим образом:

Observable<T> getCompaniesData(Param param);

Как мне объединить разные результаты?

Вы можете применить оператор flatMap к нескольким Observable, испускаемым определенным методом.

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

}
person lmarx    schedule 07.05.2019