假设我有这些可观察对象:
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]
答案 0 :(得分:1)
我不太确定您的要求,但是我认为这是您想要的:
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