当有些地方不便于分页处理,但数据量较大时,页面往往出现卡死或者用户等待时间过长问题
解决:
// data为所有数据的数组 , callback 拿到当数据要做的操作 ,pageSize 一次取多少条 export function UtilHandleBigData(data, callback, pageSize = 100) { let totalCount = data.length; // 共多少条 let currentPageNumber = 1; // 当前页数 let totalPageNumer = Math.ceil(totalCount / pageSize); //可分多少页,就是分割为多少个小数组 let handler = () => { let start = (currentPageNumber - 1) * pageSize; let end = currentPageNumber * pageSize; let currentData = data.slice(start, end); // 当前页的数据 if (typeof callback === "function") { callback(currentData, { totalCount, totalPageNumer, currentPageNumber, pageSize, }); } // console.log( // `共${totalCount}条,共${totalPageNumer}页,当前第${currentPageNumber}条` // );
// 未执行完,继续执行
if (currentPageNumber < totalPageNumer) { window.requestAnimationFrame(handler); } currentPageNumber++; }; handler(); }
调用:
let allData = [0, 1, 2 /**...很多条*/]; // data 为分割的小数组 UtilHandleBigData(allData, data => { // do something... });
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了