js 實現可緩存方法

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>

這裏我們多調用幾次後,我們可以看到,第一次是實際的運算,其他都從緩存中獲取。
這裏用到的知識使用到了閉包。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章