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 2024-04-21 10:50  自由港  阅读(48)  评论(0编辑  收藏  举报