在任何一个语言中,如果要一段程序计算量比较大、执行时间比较长,我们可以将计算结果保存下来,待一下次执行相同的程序时,可以去保存的结果中直接获取,而无需再次计算,这种方式就叫做缓存。
在JavaScript中的实现如下
function longTime(key){
console.log('after 2000 years....');
return key + '的计算结果';
}
let cache = {};
function compute(param){
let result;
let key = param.toString();
if(cache[key]){
console.log('从缓存获取');
result = cache[key];
console.log(result);
}else{
console.log('没有从缓存获取');
cache[key] = result = longTime(param);
console.log(result);
}
return result;
}
// 执行
compute('key1');
compute('key2');
compute('key3');
compute('key3');
可以看到执行结果
VM45407:14 没有从缓存获取
VM45407:2 after 2000 years....
VM45407:16 key1的计算结果
VM45407:14 没有从缓存获取
VM45407:2 after 2000 years....
VM45407:16 key2的计算结果
VM45407:14 没有从缓存获取
VM45407:2 after 2000 years....
VM45407:16 key3的计算结果
VM45407:10 从缓存获取
VM45407:12 key3的计算结果
"key3的计算结果"
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。