【发布时间】:2019-06-05 00:55:09
【问题描述】:
我有一个必须由 API 的异步响应动态填充的表。 API 发回一个 JSON,该 JSON 稍后被解释为表格的一行,我让它完美运行。
问题是,JSON 响应越大,处理响应所需的时间就越多(显然),所以当我在数组中超过 2k-3k 个元素时,将行追加到表中的 JS 开始处理 JSON 响应的时间超过 20 分钟。
有什么办法可以优化吗?
以下是我的解析过程示例:
function fillTable() {
let tbody = $('tbody');
for(let i = 0; i < 100; i++) {
let tr = $('<tr><td>' + (i + 1) + '</td><td>Table row ' + (i + 1) + '</td><td>' + (Math.random() * 1000) + '</td></tr>');
tr.appendTo(tbody);
}
}
fillTable();
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
<thead>
<tr>
<th>#</th>
<th>Description</th>
<th>Value</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
显然,sn-p 并不反映处理 JSON 所需的时间量,但你明白了。
【问题讨论】:
-
优化问题多与codereview.stackexchange.com相关
-
从等式中删除 jQuery 并立即添加行(
tbody.insertAdjacentHTML(...),tbody = document.createElement("tbody"); /*...*/ tbody.appendChild(row); table.appendChild(tbody);,...) -
我投票决定将此问题作为离题结束,因为该问题提供了一个有效的代码示例,并提供了一种优化它的方法。鉴于原始逻辑有效,并且有多种方法可以优化此逻辑以促进固执己见的答案,这个问题对于 StackOverflow 来说是题外话,并且更适合像 CodeReview 这样的相关站点,其中重构将成为主题。
-
@GeorgeJempty 问题被标记为可能重复的链接大约有 10 个新元素。针对该问题提出的答案并不能解决 2k-3k 元素的性能问题。
标签: javascript jquery html dom optimization