Создал метод 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);
}
});
}
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости