根据 Flowable 的 return 值获取 Single 并合并结果

Get Single based on return value of Flowable and merge result

我调用了一个 returns 一个 Flowable<List<Entity>> 的方法。对于此列表中的每个实体,我想调用一个 returns 关联 Single<AnotherEntity> 的方法。 EntityAnotherEntity 然后应合并为一个对象,所有对象都应在列表中返回。

我现在拥有的是这样的:

return playerRepository.getAllPlayers()
    .flatMapIterable(players -> players)
   .map(player -> player.apiId)
   .flatMapSingle(apiId -> statsRepository.getGameLog(apiId))
   .subscribe(
           stats -> { statsEntries.add(stats); }
   );

如何将其更改为满足我要求的干净解决方案?

你真的不需要那个中间体 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 */ }
    );