分批次处理海量数据

admin12个月前 (03-25)it知识841

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


标签: 分享IT知识

相关文章

中秋

月光如水,映照着中国大地。这是一个收获的季节,也是一个团圆的时刻。在秋天的长夜里,一轮明月在苍穹之中绽放出光芒,那是中秋之夜的明月,是华夏民族心中的瑰宝。中秋,又称月圆之夜,起源于古代农耕社会对月亮的...

南山经

南山经之首曰鹊山。其首曰招瑶之山,临于西海之上。多桂多金玉。有草焉,其状如韭而青华,其名曰祝馀,食之不饥。有木焉,其状如榖而黑理,其华四照。其名曰迷榖,佩之不迷。有兽焉,其状如禺而白耳,伏行人走,其名...

php mvc架构的简单例子

以下是一个简单的 PHP MVC 架构示例,包含基本的模型(Model)、视图(View)和控制器(Controller)结构:目录结构project/├── app/│   ├─...

前端聊天室

<!DOCTYPE html> <html> <head>   <title>Socket.IO 聊天室&...

数组和对象

数组和对象是编程中最基础且强大的两种数据结构,它们的联合使用可以构建出复杂且高效的数据处理方案。本文将全面介绍数组与对象联合使用的各个方面,包括基本概念、不同语言的实现方式、最佳实践、性能优化以及常见...

前端开发中数组

前端开发中,数组是最基础且强大的数据结构之一。JavaScript提供了丰富的数组操作方法,可以满足各种开发需求。下面我将从基础操作、高阶函数、动态渲染、过滤搜索和表单处理五个方面,为您详细介绍前端数...