我有两个返回对象的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对象?
getEnemyResult(..)
.flatMapIterable(result -> result.getResults())
.flatMap(enemy ->
getEnemyCharacteristics(enemy.name)
.firstElement()
.flatMap(characteristics -> {
enemy.setEnemyCharacteristics(characteristics);
return Maybe.just(enemy);
})
)