10w数组求最大值不卡顿,向文档插入10W数据不卡顿

        async function findMax(largeList){
            return new Promise((resolve,reject) =>{
                requestIdleCallback(()=>{
                    try{
                        let max = largeList[0]
                        for(let i=0;i<largeList.length;++i){
                            if(largeList[i]>max){
                                max = largeList[i];
                            }
                        }
                        resolve(max);
                    }
                    catch(error){
                        reject(error);
                    }
                });
            });
        }

window.requestIdleCallback()方法将在浏览器的空闲时段内调用的函数排队。这使开发者能够在主事件循环上执行后台和低优先级工作,而不会影响延迟关键事件,如动画和输入响应。函数一般会按先进先调用的顺序执行,然而,如果回调函数指定了执行超时时间timeout,则有可能为了在超时前执行函数而打乱执行顺序。

你可以在空闲回调函数中调用requestIdleCallback(),以便在下一次通过事件循环之前调度另一个回调。

这个方法只是把js操作移到了一个空闲的时间里,没有切片还是会卡

       // 插入十万条数据
        const total = 100000
            // 一次插入 20 条,如果觉得性能不好就减少
        const once = 20
            // 渲染数据总共需要几次
        const loopCount = total / once
        let countOfRender = 0
        let ul = document.querySelector("ul");

        function add() {
            // 优化性能,插入不会造成回流
            const fragment = document.createDocumentFragment();
            for (let i = 0; i < once; i++) {
                const li = document.createElement("li");
                li.innerText = Math.floor(Math.random() * total);
                fragment.appendChild(li);
            }
            ul.appendChild(fragment);
            countOfRender += 1;
            loop();
        }

        function loop() {
            if (countOfRender < loopCount) {
                window.requestAnimationFrame(add);
            }
        }
        loop();

http://caibaojian.com/optimize-large-data.html

前端问题总结 文章被收录于专栏

总结一些前端常见的面试笔试题,来和大家分享鸭

全部评论

相关推荐

10-28 11:04
已编辑
美团_后端实习生(实习员工)
一个2人:我说几个点吧,你的实习经历写的让人觉得毫无含金量,你没有挖掘你需求里的 亮点, 让人觉得你不仅打杂还摆烂。然后你的简历太长了🤣你这个实习经历看完,估计没几个人愿意接着看下去, sdk, 索引这种东西单拎出来说太顶真了兄弟,好好优化下简历吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务