欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

面试题:js如何渲染十万条数据并不卡住界面

程序员文章站 2022-05-12 19:56:55
这道题考察了如何在不卡住页面的情况下渲染数据,也就是说不能一次性将几万条都渲染出来,而应该一次渲染部分 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)

本题来自于网络,所有权归其作者。