js 无限列表infinityList
2020-05-14 本文已影响0人
鹏雨燕
- 新闻类app,或者现在流行的视频app,用户需要无感知上下拉取无限资源
- 100万条数据怎么加载到页面上,考虑加载,性能等
// 插入十万条数据
const total = 100000
// 一次插入 * 条,如果觉得性能不好就减少
const once = 200
// 渲染数据总共需要几次
const loopCount = total / once
let countOfRender = 0
const looptimer = setTimeout(() => {
let ul = document.getElementById("ntp-contents");
function add() {
// 优化性能,插入不会造成回流
const fragment = document.createElement('li');
for (let i = 0; i < once; i++) {
const li = document.createElement("li");
// li.innerText = Math.floor(Math.random() * total);
li.innerText = `这里是第 ${countOfRender} 次的 li ${i}`;
fragment.appendChild(li);
}
ul.appendChild(fragment);
countOfRender += 1;
loop();
}
function loop() {
if (countOfRender < loopCount) {
window.requestAnimationFrame(add);
}else{
clearInterval(looptimer)
}
}
loop();
}, 0);
常见的大量数据加载策略,分段加载,但是整个页面元素还是太多,滑动会引起卡顿