web-dev-qa-db-ja.com

RxJs:データのストリームをBehaviorSubject <[]>に段階的にプッシュ

基本的に私はチャンクでロードされるデータの配列でBehaviorSubject<[]>を膨らませようとしています。

BehaviorSubject<[]>には新しいデータのチャンク(Array.Pushなど)が追加されますが、別の配列を使用してBehaviorSubject.nextに保存および追加したくないので、レンダリングに時間がかかりすぎます。データが時間の経過とともに増加するにつれて。

なにか提案を?

14
Reddy

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]));
}
16
Supamiu

concatを使用する代わりに、spread演算子を使用できます。

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

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

これは、ストレートconcatよりも少し読みやすいことがわかりました

6
TheHanna