[英]RXJS combine/merge two Observable array by an propety “id”
我有兩個Observable
chat$: Observable<Chat[]>;
users$: Observable<User[]>;
聊天的地方是:
export interface Chat {
user_id: string;
message: string;
}
和用戶是:
export interface User {
user_id: string;
username: string;
}
現在我想把兩個oservable組合成一個新的,例如:
threads$: Observable<Thread[]>;
在哪里Threadis:
export interface Chat {
user_id: string;
username: string;
message: string;
}
我已嘗試將合並和意大利面條代碼放入地圖中,例如:
threads$ = Observable.merge(chat$, users$).pipe( map( ??? ) );
但不起作用......我是rxjs的新手。
如何使用“user_id”屬性組合兩個數組?
把這個答案作為偽代碼,因為我是在手機上做的
import {concatMap, toArray} from 'rxjs/operators';
import {map, concat} from 'rxjs';
const fullMessage$ = (message) =>
this.user$.get(message.user_id)
.pipe(
map( user => ({...message, name: user.name}))
)
this.chat$
.pipe(
concatMap( (messages: Chat[]) =>
concat(...messages.map(fullMessage$))
)
toArray()
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.