RxJs:将数据流增量推送到 BehaviorSubject<[]>
RxJs: Incrementally push stream of data to BehaviorSubject<[]>
基本上,我正在尝试使用将分块加载的数据数组来膨胀 BehaviorSubject<[]>
。
BehaviorSubject<[]>
将添加新的数据块(如 Array.push
),但我不想使用另一个数组来存储和添加到 BehaviorSubject.next
,因为这会导致随着数据随时间增长,渲染时间过长。
有什么建议吗?
你可以使用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]));
}
您可以使用扩展运算符代替 concat
:
data = new BehaviorSubject<any[]>([]);
addData(foo: any): void {
this.data.next([...this.data.getValue(), ...foo])
}
我发现这比直接 concat
更易读
基本上,我正在尝试使用将分块加载的数据数组来膨胀 BehaviorSubject<[]>
。
BehaviorSubject<[]>
将添加新的数据块(如 Array.push
),但我不想使用另一个数组来存储和添加到 BehaviorSubject.next
,因为这会导致随着数据随时间增长,渲染时间过长。
有什么建议吗?
你可以使用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]));
}
您可以使用扩展运算符代替 concat
:
data = new BehaviorSubject<any[]>([]);
addData(foo: any): void {
this.data.next([...this.data.getValue(), ...foo])
}
我发现这比直接 concat