Как можно обрабатывать несколько запросов, используемых для заполнения моделей, с помощью RXJava Observables?
Мы используем ReactiveX и Retrofit в нашем сетевом стеке для асинхронной обработки всех запросов API.
Наша цель - создать один метод, который будет возвращать полностью заполненную коллекциюUser
моделей. каждыйUser
модель имеет списокPet
объекты. Мы можем получить всеUser
модели с одним запросом. Тем не мение,Pet
модели должны быть запрошены в соответствииUser
.
Получить пользователей просто:
// Service.java
@GET("users/?locationId={id}")
Observable<List<User>> getUsersForLocation(@Path("id") int locationId);
@GET("pets/?userId={id}")
Observable<List<Pet>> getPetsForUser(@Path("id") int userId);
// DataManager.java
public Observable<List<User>> getUsersForLocation(int locationId) {
return api.getUsersForLocation(locationId);
}
public Observable<List<Pet>> getPetsForUser(int userId) {
return api.getPetsForUser(userId);
}
Мы хотели бы найти какой-нибудь удобный (в стиле RX) способ циклическогоUser
список, выбираяPet
для этого каждый пользователь, назначая ихUser
и в конечном итоге возвращаяObservable<List<User>>
.
Я довольно новичок в RX. Я просмотрел документацию и попытался использовать различные методы, такие какflatMap()
а такжеzip
однако мне еще предстоит найти точную комбинацию преобразователей или объединителей, чтобы это произошло.