代码之家  ›  专栏  ›  技术社区  ›  Santhosh

Rxjs,在浓缩数据时出现问题

  •  1
  • Santhosh  · 技术社区  · 6 年前

    我的申请中有一个行为主题。我订阅了以下行为主题。

     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 = [];
        } 
    }
    

    我已按如下方式订阅此主题。但我无法显示数据库中的所有记录。

    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 回复  |  直到 6 年前
        1
  •  2
  •   Goga Koreli    6 年前

    当你使用下一个 behaviorSubject 您可以在累积阵列上使用next。

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