2017-12-28 19 views
0

私はFlowable<List<Entity>>を返すメソッドを呼び出しています。このリストのすべてのエンティティについて、関連するSingle<AnotherEntity>を返すメソッドを呼び出す必要があります。 EntityAnotherEntityは、1つのオブジェクトにマージされ、すべてがリストに返されます。Flowableとマージ結果の戻り値に基づいてSingleを取得

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

どのように私は私の要件を満たしてきれいな溶液に、これを変更することができます?私は今、このようになります持っているもの

答えて

0

あなたは本当にその中間map()を必要としない、あなたは、元のエンティティが含まれているペアに第2のマップの結果をマッピングすることができます

return playerRepository.getAllPlayers() 
    .flatMapIterable(players -> players) 
    .flatMapSingle(player -> 
     statsRepository.getGameLog(player.apiId) 
     .map(log -> new BothEntities(player, log)) 
    ) 
    .toList() 
    .subscribe(
     allEntities -> { /* handle the list */ } 
    ); 
+0

私はこれを試してみましたが、それはので、最初は動作しませんでした「Flowable」は決して完了しません。これを「Single」に変更した後、このソリューションは今私が欲しいものを正確に行います。 –

+0

Flowablesは通常、決して終わらないライブアップデートを報告するため、特定のデータソースには注意が必要です。 – akarnokd

関連する問題