javascript - 在 HTML 中为表动态创建的行显示延迟
问题描述
我正在尝试使用 For 循环以 50 的增量填充 HTML 表的行。For 循环按预期工作,但在循环终止之前,表格中的任何行都不会显示。
function a() {
// .....
let number_of_rows = 10000
for (i = 50; i < number_of_rows; i += 50) {
b(i)
}
// .....
}
function b(start_row) {
//create rows dynamically and append to the html table
}
解决方案
JavaScript默认是阻塞的。浏览器只会在 JavaScript 完成运行到当前运行的同步代码结束时重新绘制。因此,如果您的同步代码总共插入 10000 行,那么这些行将在一切完成后立即出现。
如果您想一次渲染 50 个批次,请在以下调用之间添加一个小的延迟b
:
async function a() {
// .....
let number_of_rows = 10000
for (i = 50; i < number_of_rows; i += 50) {
await b(i)
}
// .....
}
function b(start_row) {
//create rows dynamically and append to the html table
return new Promise(res => setTimeout(res, 50)); // wait 50ms
// adjust this number as desired
}
推荐阅读
- tensorflow - Tensorflow 1.14,修复:“google.protobuf.message.DecodeError”:解析消息时出错
- python - 我的系统中有 python 2.7 和 3.8,如何使用 python 3.8 或删除 2.7?
- python - PyGame 碰撞冷却
- google-apps-script - 无法使用 Apps 脚本和高级保护访问 Google 表格数据
- javascript - React 中的应用程序文件无法识别 jsx 语法
- ios - 通过主视图控制器与 UICollectionViewCell 中的按钮交互
- python - 如何找到方法并访问所有单元格
- python - 使用 sklearn 绘制 ROC 曲线以进行硬多类预测
- microchip - 在 MPLAB X IDE v5.45 的输出窗口中更改链接颜色
- pandas - 在 pandas 中使用 groupby 的自定义函数。为什么其中一些不起作用?