RxJs:递增地将数据流推送到BehaviorSubject< []>

时间:2017-05-30 21:39:59

标签: angular rxjs5

基本上我试图用BehaviorSubject<[]>来填充将以块的形式加载的数据。

BehaviorSubject<[]>将添加新的数据块(例如Array.push),但我不想使用其他数组存储并添加到BehaviorSubject.next,因为这会导致随着数据的增长,渲染时间过长。

有什么建议吗?

2 个答案:

答案 0 :(得分:13)

您可以使用getValue()方法来实现您想要的目标。

示例:

data = new BehaviorSubject<any[]>([]);

addData(foo:any):void{
  // I'm using concat here to avoid using an intermediate array (push doesn't return the result array, concat does).
  this.data.next(this.data.getValue().concat([foo]));
}

答案 1 :(得分:5)

您可以使用扩展运算符代替使用concat

data = new BehaviorSubject<any[]>([]);

addData(foo: any): void {
  this.data.next([...this.data.getValue(), ...foo])
}

我发现这比直接concat

更具可读性