javascript - 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 秒。我怎么知道所有地图+设置数据源何时完成?提前谢谢。
解决方案
我认为您需要使用异步和等待。
- 表已经使用异步方法获得了空洞的数据量
- 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)
});
}
推荐阅读
- java - Spark SQL:在数组值上使用 collect_set?
- php - 如何将用户重定向到他们的特定子文件夹?
- ionic-framework - 我在 ionic 3 应用程序中显示媒体时遇到问题
- azure - 使用队列而不是主题和订阅有什么意义吗?
- javascript - Vuetify v-select 值不返回键
- python - 为什么在使用 Gmail API python 导入电子邮件时 mime 部分变为“0”?
- swift - NSPersistentDocument 和文件菜单项
- python - Pyomo:超出 Ipopt 最大迭代次数
- sql - 如何使用命名参数而不是使用 jOOQ 的问号
- python-3.x - 如何将子数组保存在 npy 文件中?