我從服務器獲取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
也沒有任何反應。
問題:如何解決這個問題,一般如何正確解決這些問題?