如何在角度6中合并两个相同类型的可观察数组?

时间:2018-10-24 21:04:34

标签: angular typescript rxjs

我似乎无法弄清楚如何组合两个可观察的数组。这是使用Angular 6,rxjs 6.3.2

示例代码:

var arrayOfUsers = this.httpCallToGetObservableArrayOfUsers();
var anotherArrayOfUsers = this.httpCallToGetADifferentArrayOfUsers();

//how do I combine these two Observable<User[]>?

预先感谢

1 个答案:

答案 0 :(得分:5)

由于您的可观察对象是http调用,因此我认为它们在发出后就完成了。 您可以使用forkJoin组合它们:

var arrayOfUsers = this.httpCallToGetObservableArrayOfUsers();
var anotherArrayOfUsers = this.httpCallToGetADifferentArrayOfUsers();

const allUsersArray = forkJoin(arrayOfUsers, anotherArrayOfUsers).pipe(
    map(([users, otherUsers]) => users.concat(otherUsers))
);

如果您的观测值未完成,请使用CombineLatest:

const allUsersArray = combineLatest(arrayOfUsers, anotherArrayOfUsers).pipe(
    map(([users, otherUsers]) => users.concat(otherUsers))
);