RxJs: Incrementally push stream of data to BehaviorSubject<[]>

Reddy picture Reddy · May 30, 2017 · Viewed 11.4k times · Source

Basically I'm trying to inflate BehaviorSubject<[]> with array of data which will be loaded in chunks.

BehaviorSubject<[]> will be added with new chunk of data (like Array.push) but I don't want to use another array to store and add to BehaviorSubject.next because this will cause rendering to take too long as the data grow over time.

Any suggestion?

Answer

Supamiu picture Supamiu · May 30, 2017

You can use getValue() method to achieve what you want to do.

Example:

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