html加载10万条数据,js使用ajax请求10w条以上数据的优化方案

本文介绍了如何通过将18万条数据分组并使用闭包实现,将一个页面的45万条数据以每批500条为单位,优化了JavaScript代码的性能,确保在不卡顿的情况下加载。主要涉及了数据分组、批量渲染和Vue应用中的异步处理。
摘要由CSDN通过智能技术生成

原来的代码:

loadAll(data);

function loadAll(response) {

var html = "";

for(var i = 0; i < response.length; i++) {

var item = response[i];

html += "

姓名:" + item.name + "手机号:" + item.phone + "电子邮箱:" + item.email + "";

}

$("#content").html(html);

}

优化后的代码:

loadAll(data);

function loadAll(response) {

// 将 18 万条数据分组, 每组 500 条,一共 360 组

let groups = group(response);

for(let i = 0; i < groups.length; i++) {

//闭包, 保持i值的正确性

window.setTimeout(function() {

let group = groups[i];

let index = i + 1;

return function() {

//分批渲染

loadPart(group, index);

}

}(), 1);

}

}

// 数据分组函数(每组 500 条)

function group(data) {

let result = [];

let groupItem;

for(let i = 0; i < data.length; i++) {

if(i % 500 == 0) {

groupItem != null && result.push(groupItem);

groupItem = [];

}

groupItem.push(data[i]);

}

result.push(groupItem);

return result;

}

let currIndex = 0;

// 加载某一批数据的函数

function loadPart(group, index) {

let html = "";

for(let i = 0; i < group.length; i++) {

let item = group[i];

html += "

姓名:" + item.name + "手机号:" + item.phone + "电子邮箱:" + item.email + "";

}

// 保证顺序不错乱

while(index - currIndex == 1) {

$("#content").append(html);

currIndex = index;

}

}

此方案以应用在实际项目中(一个页面有45w条数据,目前不卡)。项目使用vue。原生js,jquery,vue没什么区别。改改就好了。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值