RXJava2 Как объединить 2 наблюдаемые в одном - PullRequest
0 голосов
/ 21 апреля 2019

У меня есть два API, которые возвращают объекты:

public class Enemy{

private String name;
private int id;
private EnemyCharacteristics enemyCharacteristics;

+ геттеры и сеттеры

public class EnemyCharacteristics {

private ArrayList<Abilities> abilities;
private ArrayList<Stats> stats;

+ геттеры и сеттеры

У меня есть интерфейс Retrofit:

public interface ApiService{
@GET("enemy")
Observable<EnemyResult> getEnemyResult(@Query("limit") int limit, @Query("offset") int offset);

@GET("enemy/{name}")
Observable<EnemyCharacteristics> getEnemyCharacteristics(@Path("name") String name);

Я отправляю запрос getEnemyResult (), он возвращает:

public class EnemyResult{

private ArrayList<Enemy> results;

public ArrayList<Enemy> getResults() {
    return results;
}

public void setResults(ArrayList<Enemy> results) {
    this.results = results;
}

}

Далее мне нужно отправить для каждого запроса Enemy getEnemyCharacteristics () и вызвать Enemy.setEnemyCharacteristics () с результатом.

Как мне объединить два этих запроса с RXJava2 для возврата объектов Enemy с EnemyCharacteristics как части Enemy?

1 Ответ

0 голосов
/ 21 апреля 2019
getEnemyResult(..)
    .flatMapIterable(result -> result.getResults())
    .flatMap(enemy -> 
        getEnemyCharacteristics(enemy.name)
            .firstElement()
            .flatMap(characteristics -> {
                enemy.setEnemyCharacteristics(characteristics);
                return Maybe.just(enemy);
            })
    )

...