Я думаю, что вы ищете больше ОбъединитьПоследний вместо почтового индекса.Поскольку каждый раз, когда генерируется один поток, вам нужно пересчитывать выходной поток.
Функция слияния тоже кажется не очень хорошей. Если я правильно понял, вы должны объединить каждый комментарий с его пользователем, для этого вы можете простоdo:
comments.map((comment) => {
return {
...comment,
user: users.find(user => user.id === comment.user_id)}
})
Вот простой фрагмент кода, в котором оба потока объединяются таким образом, и в результате получается массив комментариев с информацией о пользователе :
function mockUsers$() {
return rxjs.of([
{id: '1', name: 'user1'},
{id: '2', name: 'user2'},
{id: '3', name: 'user3'}
]);
}
function mockComments$() {
return rxjs.of([
{id: '1', user_id: '1', comment: 'user1 comment 1'},
{id: '2', user_id: '1', comment: 'user1 comment 2'},
{id: '3', user_id: '1', comment: 'user1 comment 3'},
{id: '4', user_id: '2', comment: 'user2 comment'},
{id: '5', user_id: '3', comment: 'user3 comment 1'},
{id: '6', user_id: '3', comment: 'user3 comment 2'}]);
}
const comments$ = mockComments$();
const users$ = mockUsers$()
rxjs.combineLatest(users$, comments$, (users, comments) => comments.map((comment) => {
return {
...comment,
user: {...users.find(user => user.id === comment.user_id)}}
})
).subscribe((data) => console.log('Comments with user info: ', data));
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/6.5.2/rxjs.umd.js"></script>
Надеюсь, это поможет!