Сделайте ожидание в al oop, который содержит функцию модернизации - PullRequest
0 голосов
/ 03 мая 2020

Я использую модификацию для выполнения асинхронных вызовов в моем приложении.

Проблема в том, что в какой-то момент мне нужно выполнить несколько вызовов параллельно и дождаться, пока они завершатся 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, работающих параллельно, как мой сервер ресурсы ограничены.

...