【发布时间】:2017-07-29 11:41:14
【问题描述】:
尝试执行以下应该执行的代码:
- 检索用户的所有聊天列表
- 检索所有这些聊天的最后一条消息
- 检索所有这些聊天的收件人信息
-
将所有内容合并为一个数组,其中每个项目是聊天、最后一条消息和收件人信息的组合
this.msgService.getUserChatList(this.uid).do((chats) => { this.chats = []; if (!(chats.length > 0)) this.loading = false; this.getLastMessages$ = this.getLastMessagesForChats(chats); this.getRecipients$ = this.getRecipientsForChats(chats); }).switchMap( chats => Observable.from(chats) ).withLatestFrom( this.getLastMessages$, this.getRecipients$, (chat, lastMessages, recipients) => ({ chat: chat, last: lastMessages[chat['id']], recipient: recipients[chat['id']] }) ).subscribe( chats => { console.log('chats ', chats); this.chats.push(chats); this.loading = false; });
附加功能
getLastMessagesForChats(chats: any): Observable<any[]> {
let lastMessages$ = [];
for (let chat of chats) {
let obs = this.msgService.getLastMessage(chat.id)
.map( last => ({chat: chat.id, last: last}) );
lastMessages$[chat.id] = obs;
}
return Observable.from(lastMessages$).merge().toArray();
}
getRecipientsForChats(chats: any): Observable<any[]> {
let recipients$ = [];
for (let chat of chats) {
let obs = this.userService.getUserPublicInfo(chat.recipient)
.map( recipient => ({chat: chat.id, recipient: recipient}) );
recipients$[chat.id] = obs;
}
return Observable.from(recipients$).merge().toArray();
}
我收到以下错误
Uncaught (in promise): TypeError: Cannot read property 'subscribe' of undefined
TypeError: Cannot read property 'subscribe' of undefined
我找不到出了什么问题...我试图在下面重现JSBIN
有什么想法吗?
【问题讨论】:
标签: rxjs observable rxjs5