javascript - Javascript 阻止或减慢浏览器的速度。如何防止警报或加速脚本
问题描述
我有一个需要在 excel 中导出很多行的数据表。在我的示例中,我只使用了 500 行,但在真实环境中我有 > 2000 行。
更新:添加 blockui 以提醒用户:https ://jsfiddle.net/j2fug3ax/
现在,当使用 excel 中的按钮导出行时,有一个脚本可以读取每一行以操作数据并将其设置为与 excel 兼容(格式、对齐方式、单元格高度、换行符......)
这里是编辑行的代码:
//need to change double quotes to single
data = data.replace( /"/g, "'" );
// replace &
data = data.replace( /&/g, "&" );
// replace p with br
data = data.replace(/<p[^>]*>/g, '').replace(/<\/p>/g, '<br>');
// replace div with br
data = data.replace(/<div[^>]*>/g, '').replace(/<\/div>/g, '<br>');
data = remove_tags(data);
//split at each new line
splitData = data.split('<br>');
//remove empty string
splitData = splitData.filter(function(v){return v!==''});
data = '';
for (i=0; i < splitData.length; i++) {
//add escaped double quotes around each line
data += '\"' + splitData[i] + '\"';
//if its not the last line add CHAR(10)
if (i + 1 < splitData.length) {
data += ', CHAR(10), ';
}
}
//Add concat function
data = 'CONCATENATE(' + data + ')';
return data;
这段代码减慢了脚本的速度,并且浏览器上出现了 BLOCK 或 WAIT 的警报……这不是很优雅,那么,有没有办法防止这个警报或加速我的代码?
在我的示例中进行操作不是必需的,因为我设置了虚拟数据,但在真实环境中我需要它。
解决方案
所以只是一个建议:
为什么不在服务器端做呢?
在客户端处理大量数据是一个糟糕的选择。您始终依赖于客户端系统的资源容量。Javascript as-不是计算密集型操作或数据处理的好选择。
解决方案
通过 API 将您的页面大小和页码发送到服务器。查询您的表并在服务器端创建 excel/csv。返回生成的文件以响应您的 UI 以将其下载到客户端系统上。
我希望它有帮助:)
推荐阅读
- reactjs - 如何使复选框在此待办事项列表应用程序中起作用?
- php - PHP ZipArchive 删除文件名的第一个字符
- android - 如何根据 LiveData.observe 收到的信息更新 ROOM 数据库?
- ignite - Apache Ignite pod 重启失败:拓扑未初始化
- python - 在 Python 中定义嵌套函数
- php - Laravel get 员工已入职 n 个月
- linux - 如何获取第一个命令行参数并将其放入内存中的静态缓冲区?
- python - 如何随时间绘制数据?
- python-3.x - Tensorflow 数据验证无法识别数值特征中的异常
- flutter - Flutter 显示图像全屏,获取偏移量和比例因子