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

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

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

全部评论

相关推荐

哈哈哈,你是老六:百度去年裁员分评不好,赶紧弄点红包
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
# 一张图晒出你司的标语 #
4401次浏览 77人参与
# 找AI工作可以去哪些公司? #
9509次浏览 255人参与
# 开放七大实习专项,百度暑期实习值得冲吗 #
15486次浏览 223人参与
# 你的实习产出是真实的还是包装的? #
20514次浏览 343人参与
# AI面会问哪些问题? #
28438次浏览 572人参与
# 春招至今,你的战绩如何? #
66746次浏览 588人参与
# 厦门银行科技岗值不值得投 #
8146次浏览 188人参与
# 从事AI岗需要掌握哪些技术栈? #
9382次浏览 329人参与
# 中国电信笔试 #
32126次浏览 295人参与
# 你做过最难的笔试是哪家公司 #
34705次浏览 253人参与
# 投递几十家公司,到现在0offer,大家都一样吗 #
341033次浏览 2175人参与
# 金三银四,你的春招进行到哪个阶段了? #
22379次浏览 284人参与
# 同bg的你秋招战况如何? #
212250次浏览 1121人参与
# 哪些公司真双非友好? #
69755次浏览 289人参与
# 如何准备秋招 #
78315次浏览 868人参与
# 阿里笔试 #
179152次浏览 1318人参与
# 机械人避雷的岗位/公司 #
62713次浏览 393人参与
# 小马智行求职进展汇总 #
25149次浏览 80人参与
# 第一份工作一定要去大厂吗 #
14992次浏览 122人参与
# 担心入职之后被发现很菜怎么办 #
291406次浏览 1210人参与
# 为了减少AI幻觉,你注入过哪些设定? #
26297次浏览 310人参与
# 应届生第一份工资要多少合适 #
20707次浏览 86人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务