分批次处理海量数据

在处理海量数据时,使用 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('所有数据处理完成!');    }});


标签:

相关文章

马斯洛理论

生理需求是最低层次的需求,包括人类维持自身生存的最基本要求,包括饥、渴、衣、住、性、健康方面的需求。安全需求包括两个层次,一是归属的需要,即人都有一种归属于一个群体的感情,希望成为群体中的一员,并相互...

《山海经》中的一卷--东山经

《东山经》概括性翻译框架一、引言《东山经》记载了东方的山川地理,以及其中栖息的奇异生物和丰富的自然资源。这些描述不仅展示了古人对自然的观察与想象,也反映了他们对自然界的敬畏与崇拜。二、山川描述樕臾山:...

UniApp中的HTTP请求

1. UniApp内置HTTP请求方法UniApp提供了uni.request作为内置的HTTP请求API,具有以下特点:‌跨平台兼容‌:已为iOS、Android、H5等平台做了优化和适配‌简单易用...

网页优化核心技术

⚡ 一、性能优化(速度提升)‌资源压缩‌图片:采用WebP/AVIF格式,首屏图压缩至150KB内,实施懒加载(loading="lazy")代码:精简HTML/CSS/JS,移除...

前端最新语法糖

以下是2025年前端开发中值得关注的最新语法糖特性:一、JavaScript/ES2025新语法糖模式匹配(Pattern Matching)通过match/when语法替代传统if-else链,使条...

PHP-FPM高并发参数设置

针对PHP-FPM高并发参数设置,以下是关键配置建议和优化方向:一、进程管理配置‌进程模式选择‌推荐pm = static(静态模式),固定进程数避免动态调整开销‌若选择动态模式(pm = dynam...