Я хочу сделать несколько звонков одновременно, используя дооснащение. Когда оба вызова заканчиваются, я хочу что-то сделать с результатами.
Вот мой интерфейс
public interface IService { @GET("all") Observable<Global> getGlobal(); @GET("countries") Observable<Country> getCountries(); }
Это мой неполный код
Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://coronavirus-19-api.herokuapp.com/") .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJava3CallAdapterFactory.create()) .build(); IService api = retrofit.create(IService.class); List<Observable<?>> requests = new ArrayList<>(); requests.add(api.getGlobal()); requests.add(api.getCountries());
Observable.combineLatest() - это то, что вам нужно, поэтому оно будет выглядеть так:
Observable.combineLatest()
Observable<YourResult> observable = Observable .combineLatest( api.getGlobal(), api.getCountries(), { global, country -> YourResult(global, country) } )
Вы должны использовать оператор zip
val service:IService Observable.zip( service.global, service.countries, BiFunction { global, countries -> // combine result } )