Вернуть данные RxJava

216
04 мая 2017, 12:39

Создал метод generatePlayer(String, String, ApiService) в нем использую запросы, а так же метод Clan_DannieRx(player.getPersonaly_dannie().getClan_id(), application_id, api); вызывает еще несколько асинхронных запросов, если условие истинно.
Тут всё работает, все запросы работают правильно. Возник вопрос, после того как все выполнилось, вернуть мне данные назад. generatePlayer(String, String, ApiService)стоит пока с типом возвратаvoid, но хочу сделать чтоб пользовательский тип данных возвращал.

То есть в другом месте я мог сделать вот так Person = generatePlayer("name", "2323", api);

Вот что у меня есть.

 public void generatePlayer(final String account_id, final String application_id, final ApiService api)
    {
        final GenerateDannie generateDannie = new GenerateDannie();
        final String[] response = new String[1];
        clan_dannie = new Clan_Dannie();
        ApiService apiMod = RetroClient.getApiServiceMod();
        final HashMap<String, String> hashMap = new HashMap<>();
        //Генерирует персональные данные
        Flowable<Response<ResponseBody>> FlowablePersonallyDanie = api.getPersonallyDannie(account_id, application_id)
                .mergeWith(api.getInfoTexnika(application_id))  
                .mergeWith(api.getTexnikaPlayer(account_id, application_id))
                .mergeWith(api.getStatistikaTexnika(account_id, application_id))    
                .mergeWith(api.getDostizenie(application_id))   //Достижения
                .mergeWith(api.getDostizeniePlayer(account_id, application_id))  
                .mergeWith(api.getDostizenieTexnika(account_id, application_id)) 
                .mergeWith(apiMod.getModWin8()); 
        FlowablePersonallyDanie
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new FlowableSubscriber<Response<ResponseBody>>() {
                    @Override
                    public void onSubscribe(Subscription s) {
                        s.request(Long.MAX_VALUE);
                    }
                    @Override
                    public void onNext(Response<ResponseBody> responseBodyResponse) {
                        //Прилетел ответ
                        try {
                            String url =String.valueOf(responseBodyResponse.raw().request().url());
                            String response = responseBodyResponse.body().string();
                            Log.e("URL", url);
                            Log.e("TAG", response);
                            hashMap.put(url, response);
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                    @Override
                    public void onError(Throwable t) {
                        //Ошибка
                    }
                    @Override
                    public void onComplete() {
                        //В случае выполнения
                        generatePlayerDannie(hashMap, account_id);
                       if(!player.getPersonaly_dannie().getClan_id().isEmpty())
                           Clan_DannieRx(player.getPersonaly_dannie().getClan_id(), application_id, api);
                       // player.setClan_dannie(clan_dannie);
                    }
                });
    }
READ ALSO
Как изменить положение радиопереключателя в меню?

Как изменить положение радиопереключателя в меню?

Как сделать, чтобы переключатели отображались слева от наименования и уменьшить расстояние?

259
Что делать с кодировкой страниц?

Что делать с кодировкой страниц?

Работаю в BitrixСоздал сайт в кодировке UTF-8, затем скопировал на него шаблон, созданный в однобайтовой кодировке, в результате чего, все русские...

238