面试官:【后端一次性返回10万条数据怎么处理/后端发送大数据量的数据如何处理】

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: 面试官:【后端一次性返回10万条数据怎么处理/后端发送大数据量的数据如何处理】

前言

hello world欢迎来到前端的新世界


😜当前文章系列专栏:前端系列文章

🐱‍👓博主在前端领域还有很多知识和技术需要掌握,正在不断努力填补技术短板。(如果出现错误,感谢大家指出)🌹

💖感谢大家支持!您的观看就是作者创作的动力

定时器分片处理

const batchSize = 1000;
// 定义当前处理的起始索引
let currentIndex = 0;
// 定义定时器处理函数
function processDataBatch() {
  // 截取当前批次的数据
  const batchData = bigDataArray.slice(currentIndex, currentIndex + batchSize);
  // 处理当前批次的数据
  processBatchData(batchData);
  // 更新当前处理的起始索引
  currentIndex += batchSize;
  // 如果还有数据待处理,则继续设置定时器
  if (currentIndex < bigDataArray.length) {
    setTimeout(processDataBatch, 0); // 使用 setTimeout 避免阻塞主线程
  }
}
// 开始处理数据
processDataBatch();
// 处理当前批次的数据的函数
function processBatchData(data) {
  // 对当前批次的数据进行相应的处理,例如渲染到页面上或者其他操作
  console.log('Processing batch data:', data);
}

文档碎片

// 模拟后端返回的10万条数据
const backendData = Array.from({ length: 100000 }, (_, index) => index + 1);
// 创建文档碎片
const fragment = document.createDocumentFragment();
// 遍历数据并将每一项转换为 DOM 元素,添加到文档碎片中
backendData.forEach((item, index) => {
  // 创建 DOM 元素
  const div = document.createElement('div');
  div.textContent = `Item ${item}`;
  // 将创建的元素添加到文档碎片中
  fragment.appendChild(div);
  // 每当累积到一定数量时,一次性将这一批元素渲染到页面上
  if ((index + 1) % 100 === 0) {
    renderFragmentToPage(fragment);
  }
});
// 渲染文档碎片到页面上的函数
function renderFragmentToPage(fragment) {
  // 将文档碎片中的元素一次性渲染到页面上
  document.body.appendChild(fragment);
  // 清空文档碎片,以便下一批元素的累积
  fragment = document.createDocumentFragment();
}
// 渲染文档碎片中剩余的元素
renderFragmentToPage(fragment);

懒加载

// 模拟后端返回的10万条数据
const backendData = Array.from({ length: 100000 }, (_, index) => index + 1);
// 每次加载的数据量
const batchSize = 100;
// 当前已加载的数据索引
let currentIndex = 0;
// 加载下一批数据的函数
function loadNextBatch() {
  const batchData = backendData.slice(currentIndex, currentIndex + batchSize);
  batchData.forEach((item, index) => {
    // 创建 DOM 元素
    const div = document.createElement('div');
    div.textContent = `Item ${item}`;
    // 将创建的元素添加到页面上
    document.body.appendChild(div);
  });
  currentIndex += batchSize;
}
// 初始加载第一批数据
loadNextBatch();
// 在滚动到页面底部时加载下一批数据
window.addEventListener('scroll', function() {
  if (window.innerHeight + window.scrollY >= document.body.offsetHeight) {
    loadNextBatch();
  }
});

在上述示例中,我们模拟了后端一次性返回10万条数据,并通过前端懒加载的方式逐步加载数据。每次加载一定量的数据,并且当用户滚动页面到底部时自动加载下一批数据。这样可以避免一次性加载大量数据导致页面性能问题,并且提供更流畅的用户体验。


通过懒加载可以有效减少页面加载时间,降低内存占用,并且可以更好地处理大量数据的情况。不过需要注意确保懒加载的数据加载和渲染过程能够平滑进行,避免给用户带来不必要的等待或者卡顿。

后言

创作不易,要是本文章对广大读者有那么一点点帮助 不妨三连支持一下,您的鼓励就是博主创作的动力


相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
目录
相关文章
|
14天前
|
SQL 数据可视化 大数据
从数据小白到大数据达人:一步步成为数据分析专家
从数据小白到大数据达人:一步步成为数据分析专家
163 92
|
3月前
|
存储 分布式计算 数据挖掘
数据架构 ODPS 是什么?
数据架构 ODPS 是什么?
622 7
|
3月前
|
存储 分布式计算 大数据
大数据 优化数据读取
【11月更文挑战第4天】
80 2
|
30天前
|
分布式计算 Shell MaxCompute
odps测试表及大量数据构建测试
odps测试表及大量数据构建测试
|
3月前
|
数据采集 监控 数据管理
数据治理之道:大数据平台的搭建与数据质量管理
【10月更文挑战第26天】随着信息技术的发展,数据成为企业核心资源。本文探讨大数据平台的搭建与数据质量管理,包括选择合适架构、数据处理与分析能力、数据质量标准与监控机制、数据清洗与校验及元数据管理,为企业数据治理提供参考。
141 1
|
12天前
|
存储 搜索推荐 大数据
数据大爆炸:解析大数据的起源及其对未来的启示
数据大爆炸:解析大数据的起源及其对未来的启示
59 15
数据大爆炸:解析大数据的起源及其对未来的启示
|
4天前
|
分布式计算 大数据 流计算
玩转数据:初学者的大数据处理工具指南
玩转数据:初学者的大数据处理工具指南
46 14
|
7天前
|
数据采集 存储 机器学习/深度学习
数据的秘密:如何用大数据分析挖掘商业价值
数据的秘密:如何用大数据分析挖掘商业价值
28 9
|
17天前
|
数据采集 存储 分布式计算
解密大数据:从零开始了解数据海洋
解密大数据:从零开始了解数据海洋
58 17
|
28天前
|
NoSQL 关系型数据库 MySQL
招行面试:高并发写,为什么不推荐关系数据?
资深架构师尼恩针对高并发场景下为何不推荐使用关系数据库进行数据写入进行了深入剖析。文章详细解释了关系数据库(如MySQL)在高并发写入时的性能瓶颈,包括存储机制和事务特性带来的开销,并对比了NoSQL数据库的优势。通过具体案例和理论分析,尼恩为读者提供了系统化的解答,帮助面试者更好地应对类似问题,提升技术实力。此外,尼恩还分享了多个高并发系统的解决方案及优化技巧,助力开发者在面试中脱颖而出。 文章链接:[原文链接](https://mp.weixin.qq.com/s/PKsa-7eZqXDg3tpgJKCAAw) 更多技术资料和面试宝典可关注【技术自由圈】获取。

热门文章

最新文章