Rx Java - как сделать повтор с операциями takeUntil с двумя наблюдаемыми, одна наблюдаемая в зависимости от другой - PullRequest
0 голосов
/ 01 февраля 2020

У меня есть сценарий, в котором мне нужно вызвать API поиска, чтобы получить список определенного элемента на основе радиуса поиска на карте. Требуется показать как минимум пять результатов. В моем случае у меня есть два Apis (две наблюдаемые). Сначала мне нужно вызвать getExpandedSearchRadius(), чтобы получить радиус и выполнить второй вызов, doSearch() с радиусом в качестве параметра. Предположим, что doSearchApi Call возвращает только 2 результата. Мне нужно повторить оба вызова API, пока я не получу минимальный результат 5. При каждом повторении getExpandedSearchRadius необходимо вызвать, чтобы вернуть новый расширенный радиус и выполнить doSearch с новым радиусом. .

Здесь проблема заключается в том, что каждый раз, когда repeat() вызывается getExpandedSearchRadius Api не выполняется, выполняется только второй вызов с начальным радиусом, что приводит к тому же searchResponse. ниже приведен пример, который я попробовал.

getExpandedSearchRadius().flatMap{ radius -> doSearch(radius)}
                      .repeat()
                      .takeUntil(searchResponse.getItems().size >=5)
                      .map(anotherClass::displayOnMap)
...