首页 > 解决方案 > MatTableDataSource 返回约 7000 行的承诺

问题描述

尝试放入大量数据时遇到问题mattabledatasource,我想至少显示一个加载器,但我不知道数据何时已设置。我尝试使用这样的承诺:

return new Promise(resolve => {
    this.infos.map(info => {
        info.members.map(member => {
            member.contacts.map(contact => {
                dataSource.push({
                    contact,
                    member
                });
            });
        });
    });
    this.dataSource = new MatTableDataSource(dataSource);
    resolve();
});

但不起作用,只是我的桌子冻结了 10 秒。我怎么知道所有地图+设置数据源何时完成?提前谢谢。

标签: javascriptangularpromiseangular-materialangular7

解决方案


我认为您需要使用异步和等待。

  1. 表已经使用异步方法获得了空洞的数据量
  1. dataSource 已准备好创建表。
  async buildTable() {
    this.infos.map(info => {
      info.members.map(member => {
        member.contacts.map(contact => {
          dataSource.push({
            contact,
            member
          });
        });
      });
    });

    await Promise.all(dataSource).then((tableData) => {
      this.dataSource = new MatTableDataSource(tableData)
    });
  }

推荐阅读