typescript - 如何将源发出的值与前一个值合并
问题描述
假设我有这些 Observables:
let users: Observable<User[]> //all the users
let receivedUsers: Observable<User[]> //only a subset of users get from http
发射时如何使users
发射合并数组receivedUsers
:
receivedUsers: [1] .... [2] ..... [3,4] ..... [5,6]
users : [1] .... [1,2] ..... [1,2,3,4] ..... [1,2,3,4,5,6]
解决方案
我不太确定您的要求,但我认为这就是您正在寻找的:
export class Service {
private users: User[] = [];
private usersSubject: BehaviourSubject<User[]> = new BehaviourSubject();
constructor(){
// whereever it comes from
// also consider a Set<User> if you want to avoid duplicates
usersReceived.subscribe(users => {
this.users = [...this.users, users];
// this.users = this.users.push(users);
this.usersSubject.next(this.users);
});
}
public getAllUsers: Observable<User[]> {
return this.usersSubject.asObservable();
}
}
如果这不能满足您的需求,那么您应该看一下 rxjs 操作符,尤其是merge
,mergeAll
和mergeMap
. 见官方文档:
http ://reactivex.io/rxjs/class/es6/Observable.js~Observable.html
推荐阅读
- ios - appDelegate 设置 rootViewController 和 viewWillAppear 不被调用?
- android - 错误:无法解决:support-core-ui
- java - 如何在这个程序中添加扫描仪?如果用户想输入值
- git - 获取有关远程分支提交的信息 [Git]
- java - 预约申请,达到条件时禁用按钮
- java - 我可以使用 Java 代码从 Windows Server 2012 RS 发送邮件吗?
- html - Plotly 不适用于 HTML 函数
- c# - 状态条与通知图标
- php - PHP - 使用带有数组和 stdClass 对象的 foreach 获取名称和值
- c# - 机器学习 - 缺少分数列