面试题:js如何渲染十万条数据并不卡住界面
程序员文章站
2022-12-13 07:53:27
这道题考察了如何在不卡住页面的情况下渲染数据,也就是说不能一次性将几万条都渲染出来,而应该一次渲染部分 DOM,那么就可以通过 来每 16 ms 刷新一次。 代码如下: js setTimeout(() = { let data = 100000; let once = 20; let num = ......
这道题考察了如何在不卡住页面的情况下渲染数据,也就是说不能一次性将几万条都渲染出来,而应该一次渲染部分 dom,那么就可以通过 requestanimationframe
来每 16 ms 刷新一次。
代码如下:
<!doctype html> <html> <head> <meta charset="utf-8"> <title>js如何渲染十万条数据并不卡住界面</title> </head> <body> <ul>控件</ul> </body> </html>
settimeout(() => { let data = 100000; let once = 20; let num = data/once; let currentindex = 0; let ul = document.queryselector('ul'); let frameagent = document.createdocumentfragment(); function add(){ for (var i = 0; i < once; i++) { let li = document.createelement('li'); li.innertext = math.floor(math.random() * data); frameagent.appendchild(li); } currentindex += 1; ul.appendchild(frameagent); loop(); } function loop(){ if(currentindex < num){ window.requestanimationframe(add); } } loop(); },0)
本题来自于网络,所有权归其作者。