I'm trying to tidy up my code a little, and Single
is looking like a good choice for me as I'm doing something that will only ever emit one result.
I'm having an issue though as I was using flatMapIterable
previously to take my response (a list) and do something on each item. I'm not seeing how I can achieve this with Single.
getListOfItems()
.flatMapIterable(items -> items)
.flatMap(item -> doSomethingWithItem())
.toList()
This works fine if getListOfItems
is returning an Observable
but if I try and make it return a Single
, then I can't do flatMapIterable
and can't see an alternative, any ideas?
flattenAsObservable should do the trick, it will map Single
success value to Iterable
(list), and emit each item of the list as an Observable
.
getListOfItems()
.flattenAsObservable(new Function<Object, Iterable<?>>() {
@Override
public Iterable<?> apply(@NonNull Object o) throws Exception {
return toItems(o);
}
})
.flatMap(item -> doSomethingWithItem())
.toList()