我从服务器获取json
格式的聊天列表。我把他们推到ChatsModel
。此类中有userId
字段,即在每个聊天中有该用户的userId
。没有关于用户的其他信息。还有就是有关类型的用户信息的一个领域UserMessagesResponse
如何在flatMap运算符中正确查询?
所以,在那个userMessagesResponse
等于null
我聊天列表和userId
之后开始时,我要送另一个请求获取有关信息用户。我这样做,是这样的:发生在flatMap
操作的块
private void loadChatsFromNetwork(int count, AccessDataModel accessDataModel) {
String accessToken = accessDataModel.getAccessToken();
Flowable<ChatsModel> chatsModelSingle = getChatsApi().getChats(count, accessToken, Constants.api_version)
.subscribeOn(Schedulers.io())
.flatMap(chatsModel -> {
RealmList<Item> items = chatsModel.getResponse().getItems();
StringBuilder userIds = new StringBuilder();
for (Item item : items) {
userIds.append(item.getMessage().getUserId()).append(",");
}
return loadUsersById(userIds, chatsModel);
})
.observeOn(AndroidSchedulers.mainThread());
chatsModelSingle.subscribe(chatsModel -> {
Log.d(TAG, chatsModel.getResponse().getItems().first().getMessage().getMessagesUserItem().getFirstName());
chatsRepository.updateChatsData(chatsModel);
iGetChatsCallback.onGetChatsSuccess(chatsModel);
},
throwable -> {
iGetChatsCallback.onGetChatsError(throwable.getMessage());
Log.d(TAG, "onError() " + throwable.getMessage());
});
}
private ChatsModel loadUsersById(StringBuilder userIds, ChatsModel chatsModel) {
MyApplication.getChatsApi().getUsersByChats(userIds.toString(), "photo_100")
.subscribe(messagesUser -> {
RealmList<Item> item = chatsModel.getResponse().getItems();
for (int i = 0; i < item.size(); i++) {
Message message = item.get(i).getMessage();
RealmList<UserMessagesResponse> messagesUserItemList = messagesUser.getUserMessagesResponse();
for (UserMessagesResponse messagesResponse : messagesUserItemList) {
if (messagesResponse.getUid().equals(message.getUserId())) {
message.setMessagesUserItem(messagesResponse);
chatsModel.getResponse().getItems().get(i).setMessage(message);
}
}
}
});
return chatsModel;
}
所有这些行动,是因为我需要推动有关用户接收到的信息到ChatsModel
类的userMessagesResponse
领域。如果成功,我发送chatsModel
到适配器
这两个请求都工作正常。我得到userId
列表和关于用户的信息。
问题是,chatsModel在flatMap中返回后,其中return chatsModel
,什么都没有发生,subscriber
也没有任何反应。
问题:如何解决这个问题,一般如何正确解决这些问题?