У меня есть функция loadApplesById
, которая принимает AppleId
и возвращает Single<List<Apple>>
.
В другой функции, loadApplesByIdList
Я принимаю List<AppleId>
в качестве параметра. И для каждого элемента в нем я должен назвать loadApplesById
. loadApplesByIdList
также вернет Single<List<Apple>>
.
Примерно так:
Single<List<Apple> loadApplesById(AppleId appleId)
{
// magic to create and load the apple list.
return the Single.just(AppleList);
}
Single<List<Apple> loadApplesByIdList(List<AppleId> appleIdList)
{
// My question how to create this function (?)
// Approach (1)
return Observable.from(appleIdList).flatMap(
appleId -> this.loadApplesById(id)
.toObservable())
.reduce(new ArrayList<>(), (List<Apple> a, List<Apple> b)
-> { a.addAll(b); return a; }).toSingle();
// Approach (2)
return Observable.from(appleIdList).flatMap(appleId -> loadApplesById(id)
.toObservable())
.toSingle();
}
Хотя оба эти подхода компилируются, ни один из них не работает.
Было бы отличным уроком для обучения, если бы кто-то потратил время на то, чтобы рассказать о различных способах достижения этой цели (со сложением, уменьшением, flatMap, concatMap) и т. Д.