У меня есть следующий код, который работает, как ожидалось. Тем не менее, я не люблю иметь блокирующий Get. Есть ли способ переместить вызов getSingle () выше в «глобальную» переменную Observable, чтобы избежать этого? Другими словами, я бы хотел, чтобы getSingle завершился без использования blockingGet, прежде чем переходить к коду. Обратите внимание, что в вызове карты мне нужен доступ к ответу foos, bar и getSingle ().
Любая помощь приветствуется!
public List<Baz> example(Single<Collection<Foo>> foosSingle, Collection<Bar> bars) {
return foosSingle
.flatMap(foos ->
Observable.fromIterable(bars)
.map(bar -> getBaz(foos, getSingle(bar.getBlah()).blockingGet(), bar.getFlaz())
.toList()
);
}
FWIW Я попытался заменить вызов .map начто-то вроде этого:
.map(bar -> Lists.ArrayList(bar, getSingle(bar.getBlah()).blockingGet())
.map(list -> getBaz(foos, list.get(1), list.get(0).getFlaz())
, который дает мне доступ ко всем нужным мне переменным, но не решает проблему blockingGet.