首页Vue同时插入大量数据优化

同时插入大量数据优化

分类Vue时间2024-09-05 11:01:47发布RustStream浏览107
摘要:实现原理 通过浏览器自带API( requestIdleCallback 用于在浏览器空闲时执行低优先级的任务,从而避免阻塞主线程,提升页面的性能和响应速度。 该API允许开发者在浏览器空闲时期插入一个函数,这个函数将在事件循环空闲时被调用,主要用于执行一些不需要立即完成的工作,如日志记录、数据分析、渲染优化等‌ 代码实现 <template> <div class="content"> <button @click="handleClick"</div></template><!--autointro-->...

实现原理

通过浏览器自带API( requestIdleCallback )用于在浏览器空闲时执行低优先级的任务,从而避免阻塞主线程,提升页面的性能和响应速度。

该API允许开发者在浏览器空闲时期插入一个函数,这个函数将在事件循环空闲时被调用,主要用于执行一些不需要立即完成的工作,如日志记录、数据分析、渲染优化等‌

代码实现

<template>
    <div class="content">
        <button @click="handleClick">点击插入{{ count }}条数据</button>
    </div>
</template>
<script setup>
import { onMounted } from 'vue';


const count = 30000
const arr = new Array(count).fill(0).map((_, i) => i)
let content;

onMounted(() => {
    content = document.getElementsByClassName('content')[0]
})


const handleClick = () => {
    profrance(arr, task)
}


// 要重复执行的操作
function task(item, index){
    const dom = document.createElement('li');
    dom.innerText = index;
    content.appendChild(dom);
}


/**
 * 
 * @param data 传入的数据
 * @param task 要执行的任务
 */
function profrance(data, task){
    if(data.length == 0){
        return;
    }
    let index = 0;
    function _run(){
        if(index > data.length){
            return
        }
        requestIdleCallback((idle) => {
            while(idle.timeRemaining() > 0 && index <= data.length){
                task(data[index], index)
                index++
            }
            _run()
        })
    }
    _run()
}






</script>

本文链接:https://blog.smallhao.fun/?id=6 转载需授权!

分享到:

Chen’Blog版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

Canvas实现图片下载功能 webworker实现不需要引用外部js文件运行

游客 回复需填写必要信息
召唤伊斯特瓦尔