Я использую модификацию для выполнения асинхронных вызовов в моем приложении.
Проблема в том, что в какой-то момент мне нужно выполнить несколько вызовов параллельно и дождаться, пока они завершатся sh, прежде чем я смогу запустить следующую функцию.
Я также хотел бы быть в состоянии ограничить количество вызовов, которые выполняются параллельно.
Это пример формы, которую может изменить код, который я хочу изменить:
private void recoverCurrentValuePurchases() {
for (Purchase purchase: purchasesList)
recoverCurrentValuePurchase(purchase);
float sum = addUpAllTheValuesRecovered(purchasesList);
}
private void recoverCurrentValuePurchase(Purchase purchase) {
GetServices service = RetrofitInstance.getRetrofitInstance().create(GetServices.class);
Call<Response> call;
call = service.recoverPurchaseValue(purchase.getId());
call.enqueue(new Callback<Response>() {
@Override
public void onResponse(@NotNull Call<Response> call, @NotNull retrofit2.Response<Response> response) {
Response purchaseValueRecovered = response.body();
purchase.setValueRecovered(purchaseValueRecovered);
}
@Override
public void onFailure(@NotNull Call<RespuestaRecuperarCompras> call, @NotNull Throwable t) {
error();
}
});
}
private float addUpAllTheValuesRecovered(purchasesList){
float value = 0;
for(Purchase purchase : purchaseList)
value = value + purchase.getValueRecovered()
return value;
}
Я хочу выполнить функция recoverCurrentValuePurchases и ожидание завершения всех вызовов дооснащения перед началом выполнения функции addUpAllTheValuesRecovered ().
Если возможно, я бы также хотел поставить максимум вызовов для Retrofit, работающих параллельно, как мой сервер ресурсы ограничены.