javascript 对yield生成器的理解

什么情况下可以使用yield,如果你后端传过来的数据量较大,你可以使用yield来进行懒加载,避免一次性的加载对前端造成卡顿,或长时间渲染等待,比较如说加载10万或几十万条数据时,前端一方面要读取一方面还要渲染

yield生成器,在函数名前加*号,返回时用yield

javascript 复制代码
function *gen(data)
{
	yield data;
	return true;
}

//使用方法
let arr=[1,2,3,4,5,6];
let splitdata=get(arr),
a=splitdata.next();
//输出数组
console.info(a.value);

//如果数据量比较大可以函数进行分割成小数组,100个为一组,如果上万条就1000个为一组,解决前端压力,每次只渲染1千,按下一页或向下滑再渲染新数据出来
function *group(data)
{
	let result=[];
        let groupItem=[];

        for(let k=0;k<data.length;k++)
        {
            if(k%100===0)
            {
                !!groupItem && result.push(groupItem);
                groupItem=[];
            }
            groupItem.push(data[k]);
        }

        result.push(groupItem);

        yield result;
        return true;
}
//arr如果有1万条以上数据,则会被分割
let splitdata2=group(arr);
let s=splitdata2.next();
for(let k=0;k<s.value.length;s++)
{
	//判断数组不为空
	if(s.value[k].length>0)
	{
		console.info(s.value[k]);
	}
}
相关推荐
萧瑟余晖2 小时前
Java深入解析篇三十三之密封类与接口(Sealed Classes)详解
java·开发语言
论迹复利5 小时前
FreeRTOS 在 RISC-V 上是如何“点火“的 —— 从 main() 到第一个任务的完整链路
java·开发语言·risc-v
circuitsosk6 小时前
任务规划器的三种范式对比:ReAct、Plan-and-Execute 与 Tree-of-Thought 在真实业务中的取舍
前端·javascript·python·react.js·llm·ai agent
张宇Joaquin6 小时前
鲲鹏统一并行加速库KUPL--众核并行能力介绍
java·开发语言·网络
736c6 小时前
C语言-数组 07
c语言·开发语言
宸津-代码粉碎机6 小时前
AI攻防战升级!基于Spring AI构建Java应用自动免疫安全体系
java·大数据·开发语言·人工智能·python·安全·spring
小磊哥er7 小时前
深入解构Claude Code - 第 12 篇 · 整体串起来
javascript·ai编程
小磊哥er7 小时前
深入解构Claude Code - 第 11 篇 · 工程上的讲究
javascript·ai编程
LorryJovens8 小时前
【LAAP科研】CEN因果等价网络理论---从双缝干涉到因果等价
开发语言·php
Brilliantwxx9 小时前
【Linux】 进程(10) 进程控制深度解析:创建、终止与等待
linux·运维·服务器·c语言·开发语言·网络