在Lodash中构建具有TTL功能的缓存
Building a cache with TTL feature in Lodash
如何使用Lodash在JavaScript中实现支持超时(TTL)
值的缓存?
_.memorize
没有TTL
功能。
作为一个例子,Adam的答案是使用_.wrap
方法:
var myExpensiveFunction = _.wrap(myExpensiveFunction, function(originalFunction, param1) {
if (/* data is in cache and TTL not expired */){
// return cachedValue
} else {
// run originalFunction(param1) and save cachedValue
// return cachedValue;
}
});
如果您的昂贵函数返回promise,请不要忘记返回已解析的promise,而不是直接返回cachedValue(如果存在缓存)。
我不建议使用memoize()
。它违背了记忆化的目的,即为给定的一组输入缓存永远不会改变的计算结果。
如果你想建立一个TTL缓存,我建议你看看wrap()。使用它可以用一个进行缓存和TTL检查的通用函数包装您的函数。
相关文章:
- 添加文字和评论功能更新Div
- JavaScript打印功能使日历停止工作
- 每当您在选择器内移动鼠标时,悬停功能就会重复
- 如何防止网页加载后自动启动功能
- 除修剪外的其他功能
- 悬停功能触发器
- 使用angularjs向浏览器发送servlet响应(下载功能)
- 删除CKEditor工具栏按钮,但不删除功能
- 异步facebook功能
- 如何将chrome扩展功能移植到移动设备(特别是jquery和trello)
- jQuery滚动功能只工作一次
- Graphiti中是否有任何工具提示功能
- React redux初始化功能,无论状态变化如何
- 在哪里可以学习ECMAScript标准中尚未包含的JavaScript功能
- 正在获取select上的功能id
- Rhino打印功能
- 使用(navigator.geolocation)检测浏览器功能错误
- 主体单击删除功能上的输入框宽度
- JQuery使用相同的功能自动完成各种输入文本
- 在Lodash中构建具有TTL功能的缓存