当前位置:网站首页>js: 实现一个cached缓存函数计算结果
js: 实现一个cached缓存函数计算结果
2022-08-02 20:12:00 【彭世瑜】
实现功能:
第一次执行函数计算到的结果会被缓存,再次调用函数时,函数值直接存缓存结果中获取
function cached(func) {
// 缓存计算结果
const cache = Object.create(null)
// 返回一个缓存函数
return function (...args) {
let cache_key = JSON.stringify(args)
let result = null
if (cache_key in cache) {
result = cache[cache_key]
} else {
result = func.apply(this, args)
cache[cache_key] = result
}
return result
}
}
使用示例
function computed(a, b) {
console.log('computed')
return a + b
}
let cachedComputed = cached(computed)
console.log(cachedComputed(2, 3))
console.log(cachedComputed(2, 3))
// 只计算了一次
// computed
// 5
// 5
边栏推荐
猜你喜欢
LM小型可编程控制器软件(基于CoDeSys)笔记二十五:plc的数据存储区(数字量输入通道部分)
李沐动手学深度学习V2-bert和代码实现
一次线上事故,我顿悟了异步的精髓
Fiddle设置接口数据用指定工具查看;Sublime Text设置json数据格式化转换
Meta 与苹果的元宇宙碰撞
实现fashion_minst服装图像分类
【SLAM】DM-VIO(ros版)安装和论文解读
信息系统项目管理师必背核心考点(五十八)变更管理的主要角色
模板的进阶
J9 Digital Currency Theory: Identifying Web3's New Scarcity: Open Source Developers
随机推荐
Informatics orsay a tong (1258: 【 9.2 】 digital pyramid)
美国爱荷华州立大学| Improving Distantly Supervised Relation Extraction by Natural Language Inference(通过自然语言推理改进远程监督关系提取)
pytorch的tensor创建和操作记录
[AnXun cup 2019] easy_web
顺序查找和折半查找,看这篇就够了
Golang source code analysis: juju/ratelimit
基于“无依赖绝对定位”实现的圣杯三栏布局
Thread线程类基本使用(下)
Axure9的元件用法
Fiddle设置接口数据用指定工具查看;Sublime Text设置json数据格式化转换
「 每日一练,快乐水题 」1374. 生成每种字符都是奇数个的字符串
引用类型 ,值类型 ,小坑。
用了TCP协议,就一定不会丢包吗?
golang 源码分析:juju/ratelimit
EasyExcel dynamic parsing and save table columns
Parse common methods in the Collection interface that are overridden by subclasses
C#异步和多线程
Electron User Guide Beginning Experience
【SLAM】DM-VIO(ros版)安装和论文解读
Nervegrowold hands-on learning deep learning V2 - Bert pre training data set and code implementation