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>
这里我们多调用几次后,我们可以看到,第一次是实际的运算,其他都从缓存中获取。
这里用到的知识使用到了闭包。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人