RXJava2如何将2个observable合二为一

问题描述 投票:-1回答:1

我有两个返回对象的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结合起来,以EnemyCharacteristics作为敌人的一部分返回Enemy对象?

java android retrofit rx-java rx-java2
1个回答
0
投票
getEnemyResult(..)
    .flatMapIterable(result -> result.getResults())
    .flatMap(enemy -> 
        getEnemyCharacteristics(enemy.name)
            .firstElement()
            .flatMap(characteristics -> {
                enemy.setEnemyCharacteristics(characteristics);
                return Maybe.just(enemy);
            })
    )

© www.soinside.com 2019 - 2024. All rights reserved.