Tüm API isteklerini eşzamansız bir şekilde işlemek için ağ yığınımızda ReactiveX ve Retrofit kullanıyoruz.Modelleri doldurmak için birden çok istek kullanılan RXJava Observables kullanılarak nasıl kullanılabilir?
Hedefimiz, User
modellerinin tamamen doldurulmuş bir koleksiyonunu döndürecek bir yöntem oluşturmaktır. Her User
modelinde Pet
nesnenin bir listesi vardır. Tek bir istekle User
modellerini getirebiliriz. Ancak, User
için Pet
modelleri talep edilmelidir.
Alma kullanıcıların basit:
// 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);
}
Biz User
atayarak, User
Listede döngü her kullanıcı için Pet
s getirilirken bazı uygun (RX tarzı) yol bulmak istiyoruz ve En sonunda Observable<List<User>>
döndürüyor.
RX için oldukça yeni. Belgelere baktım ve flatMap()
ve zip
gibi çeşitli yöntemleri kullanmayı denedim, ancak bunun gerçekleşmesi için dönüşümlerin veya birleştiricilerin tam kombinasyonunu henüz bulamadım.
Bu sunumda Jake Wharton tam olarak bunu yapar: https://goo.gl/01Evkm – rciovati
Bağlantı için teşekkürler. Şu anda Java 7 kullanıyorum ve bu sunumda lambdas kullanımı, bu yöntemde olup bitenleri flatMap() 'e çağırıyor. Herhangi bir anlayış? – JeremyFromEarth