मेरे पास एक विधि के लिए एक कॉल है जो एक 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
ric.steen 28 पद 2017, 11:34

1 उत्तर

सबसे बढ़िया उत्तर

आपको वास्तव में उस मध्यवर्ती 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 */ }
    );
0
akarnokd 28 पद 2017, 14:25