У меня есть сценарий, в котором мне нужно вызвать 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)