随笔 - 441  文章 - 4  评论 - 84  阅读 - 109万 

1.概述

有些场景下,如果一些函数需要大量的运算,但是他们的传入的参数是一样的,这个时候,我们可以将这些运算缓存下来,之后的运算就可以不用重复计算了。

2.实现方法

<script>
// 可以缓存的函数
function cacheFunc(fn){
	//缓存处理
	let cache=new Map();
	return function(...args){
		//将参数作为key
		let key=JSON.stringify(args);
		let result=cache.get(key);
		if(result){
			console.info("getFromcache");
			return result;
		}
		//真正执行计算
		result= fn(...args)	;
		//将计算结果加入到缓存
		cache.set(key,result);
		return result;
	}	
}

//实际需要执行的函数
function realFunc(row,age){
	console.info(row);
	console.info(age);
	return true;	
}

let row={name:"ray"};

let func=cacheFunc(realFunc);

func(row,19);
func(row,19);
func(row,19);
</script>

这里我们多调用几次后,我们可以看到,第一次是实际的运算,其他都从缓存中获取。
这里用到的知识使用到了闭包。

posted on   自由港  阅读(53)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示