#android #rest #retrofit #rxjava
Здравствуйте. Недавно начал разбираться с RxJava. Что-то тяжело пока дается... Есть сервер на котором есть приватные чаты(тет-а-тет) и групповые. Посредством Rest запроса на сервер нужно выудить следующую инфу оттуда: Все существующие чаты и диалоги: Observable> chats = apiService.getChats(); Observable
> dialogs = apiService.getDialogs(); Объекты Chat и Dialog содержат переменные: int unreadMessagesCount (количество непрочитанных сообщений); int id (по этому id запрашивается список сообщений из чата) Запросы на список сообщений Observable
> dialogMessages = apiService.getDialogMessages(String id); Observable
> chatMessages = apiService.getChatMessages(String id); Как в этом случае более грамотно составить запросы используя RxJava, чтобы опросить все чаты и диалоги на предмет новых сообщений и затем получить эти сообщения в один список?
Ответы
Ответ 1
Например как-то так: Получаем массив чатов. Преобразуем массив оных в очередь объектов Chat. Получаем детали каждого. Результат преобразовываем обратно в массив:. apiService.getChats() .from(Observable::from) .flatMap(chat -> apiService.getChatMessages(chat.id)) .toList() .subscribe(System::out); Если без лямбд, то from(Observable::from) можно переписать вот такой ужасной конструкцией: .flatMap(new Func1, Observable
>() { @Override public Observable call(List chats) { return Observable.from(chats); } })
Комментариев нет:
Отправить комментарий