我调用了一个返回Flowable<List<Entity>>
的方法。对于此列表中的每个实体,我想调用一个返回关联的Single<AnotherEntity>
的方法。然后应将Entity
和AnotherEntity
合并为一个对象,并且所有这些对象都应在列表中返回。
我现在的样子如下:
return playerRepository.getAllPlayers()
.flatMapIterable(players -> players)
.map(player -> player.apiId)
.flatMapSingle(apiId -> statsRepository.getGameLog(apiId))
.subscribe(
stats -> { statsEntries.add(stats); }
);
如何将其更改为符合我要求的清洁解决方案?
答案 0 :(得分:0)
您并不真正需要中间map()
,您可以将第二张地图的结果映射到包含原始实体的对中:
return playerRepository.getAllPlayers()
.flatMapIterable(players -> players)
.flatMapSingle(player ->
statsRepository.getGameLog(player.apiId)
.map(log -> new BothEntities(player, log))
)
.toList()
.subscribe(
allEntities -> { /* handle the list */ }
);