Здравствуйте. Недавно начал разбираться с 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, чтобы опросить все чаты и диалоги на предмет новых сообщений и затем получить эти сообщения в один список?
Ответ
Например как-то так:
Получаем массив чатов.
Преобразуем массив оных в очередь объектов Chat
Получаем детали каждого.
Результат преобразовываем обратно в массив:.
apiService.getChats()
.from(Observable::from)
.flatMap(chat -> apiService.getChatMessages(chat.id))
.toList()
.subscribe(System::out);
Если без лямбд, то from(Observable::from) можно переписать вот такой ужасной конструкцией:
.flatMap(new Func1, Observable
Комментариев нет:
Отправить комментарий