分批次处理海量数据

在处理海量数据时,使用 setTimeout 分批次处理可以避免阻塞主线程,提升页面响应性。以下是分步骤的解决方案和代码示例:

方法思路

  1. 数据分块‌:将大数据拆分成多个小批次(如每批100条)。

  2. 异步处理‌:使用 setTimeout 在每批次处理结束后,让出主线程执行其他任务。

  3. 递归调用‌:处理完当前批次后,递归调用下一批次处理,直到完成。

function processInBatches({ data, batchSize, processBatch, onFinish }) {    let currentIndex = 0;    function nextBatch() {        if (currentIndex >= data.length) {            if (onFinish) onFinish();            return;        }        // 获取当前批次数据        const batch = data.slice(currentIndex, currentIndex + batchSize);        // 处理当前批次        processBatch(batch, currentIndex);        currentIndex += batchSize;        // 使用 setTimeout 启动下一批次        setTimeout(nextBatch, 0);    }    // 开始处理    nextBatch();}// 使用示例const largeData = Array.from({ length: 10000 }, (_, i) => i); // 模拟1万条数据processInBatches({    data: largeData,    batchSize: 100, // 每批处理100条    processBatch: (batch) => {        console.log('处理批次:', batch);        // 这里执行实际的数据处理逻辑        batch.forEach(item => {            // 处理每条数据,例如更新DOM或进行计算        });    },    onFinish: () => {        console.log('所有数据处理完成!');    }});


标签:

相关文章

职场需要哪些能力和素质

一、‌专业能力‌‌专业技能与知识‌掌握岗位相关的核心技能(如办公软件操作、行业工具应用)和专业知识,是胜任工作的基础‌。‌持续学习能力‌快速适应行业变化,主动学习新知识、新技术以保持竞争力‌。‌市场敏...

2025年最热门的AI项目分类与核心应用

2025年最热门的AI项目分类与核心应用一、‌AI图像与视频生成工具‌‌智能图像处理‌美图秀秀、DeepSeek等工具通过智能修图、3D建模和电商商品图生成功能占据市场主流,尤其在服装换装、包装设计中...

程序员所需要学习的英语单词2

‌一、编程基础核心词汇‌‌类别‌‌关键单词‌‌中文释义‌‌代码示例‌‌数据类型‌integer,  string, boolean整数、字符串、布尔值int age =...

Flutter Windows 安装完整指南

一、系统要求与环境准备1. 硬件与操作系统要求项目最低要求推荐配置操作系统Windows 10 64位Windows 11 22H2内存8GB16GB磁盘空间1.64GB (不含IDE)10GB SS...

Vue3 的生命周期钩子

Vue3 的生命周期钩子函数是组件从创建到销毁过程中各个阶段的关键节点,以下是主要特点和使用方式:一、核心生命周期钩子(Composition API)setup()替代了 Vue2 的 before...

前端语法糖的由来

“语法糖”(Syntactic Sugar)在前端开发中(以及整个编程领域)是一个广泛使用的术语,用来描述那些‌让代码写起来更简洁、更易读、但不会增加语言新功能的语法特性或结构‌。它在前端领域尤为常见...