Проблема: обращение к конечной точке до тех пор, пока список возвращаемых элементов не станет пустым. Каждый последующий вызов будет иметь обновленный параметр запроса packageId, который представляет собой packageId последнего элемента.
Настройка: Retrofit2 с адаптером Rx
Попытка:
MyApiService api = retrofit.create(MyApiService.class);
Observable<Output> call = api.myCall(packetId);
call.repeat().takeUntil(output -> output != null && !output.isEmpty())
.compose(applySchedulers())
.subscribe(output -> {
packetId = output.lastPacketId();
onFetchOutput(output)
});
Здесь packageId не будет обновляться, так как наблюдаемый объект будет иметь те же параметры, с которыми он был создан.
Я всегда могу снова вызвать этот метод после получения результата.
Вопрос. Существует ли реактивный способ сделать это? Я предполагаю, что в нем будет задействован какой-то оператор, который каким-то образом вернет результаты.