При использовании наблюдаемых и т. Д. Следует принимать их от всего сердца. Одной из предпосылок для охвата является отделение конфигурации и конструкции вашего трубопровода от его выполнения.
Другими словами, настройте конвейер заранее, а затем, когда данные доступны, отправьте данные через него.
Кроме того, охват наблюдаемых означает избегание циклов for.
Я не на 100% использую ваш вариант использования, но я бы предложил создать конвейер, который будет принимать инструмент в качестве входных данных и возвращать подписку ...
Так что-то вроде
service.getBook(instrument.getData())
.flatMap(gob -> {
onBookUpdate(gob);
return gob;
});
Это вернет Observable
, на который вы можете подписаться, и добавит результат в подписку.
Затем создайте наблюдаемое семя, которое закачивает в него объекты инструмента.
Не уверен в некоторых деталях вашего API, поэтому возвращайтесь ко мне, если это не ясно или я сделал неверное предположение.