Rxjs,在压缩数据时发出

时间:2018-12-04 05:59:41

标签: angular typescript rxjs

我的应用程序中有一个行为主题。我订阅了以下行为主题。

 tableData: BehaviorSubject<any> = new BehaviorSubject([]);

我正在使用next()方法从其他一些函数中设置数据,如下所示

for (let item of data) {
    let objArr = [];
    // some code here like for loop (i am processing 100k records)

    objArr.push(object);
    if (objArr.length == 20) {
        this.tableData.next(objArr);
        objArr = [];
    } 
}

我已经按如下方式订阅了这个BehaviourSubject。但是我无法显示数据库中的所有记录。

this.data = [];
this.utilServ.tableData.subscribe((data) => {
    if (data.length !== 0) {
        for (let item of data) {
            this.data.push(item);
        }
    }
});
this.utilServ.tableData.next([]);

它仅显示最近的记录。

如何合并/合并/合并来自行为主体的数据?

1 个答案:

答案 0 :(得分:2)

当您使用behaviorSubject的next时,可以对累积数组使用next。

一种方式是这样写

const newValue = this.tableData.value.concat(objArr);
this.tableData.next(newValue);