在 Lodash 中使用 TTL 功能构建缓存
Building a cache with TTL feature in Lodash
如何使用 Lodash 在 JavaScript 中实现支持超时 (TTL)
值的缓存?
_.memorize
没有 TTL
功能。
我不建议为此使用 memoize()
。它违背了记忆化的目的,即针对给定的一组输入缓存永远不会改变的计算结果。
如果你想构建一个 TTL 缓存,我建议你看看 wrap()。使用它来使用执行缓存和 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;
}
});
如果您的昂贵函数 return 是一个承诺,请不要忘记 return 一个已解决的承诺,而不是直接缓存值 如果缓存存在
如何使用 Lodash 在 JavaScript 中实现支持超时 (TTL)
值的缓存?
_.memorize
没有 TTL
功能。
我不建议为此使用 memoize()
。它违背了记忆化的目的,即针对给定的一组输入缓存永远不会改变的计算结果。
如果你想构建一个 TTL 缓存,我建议你看看 wrap()。使用它来使用执行缓存和 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;
}
});
如果您的昂贵函数 return 是一个承诺,请不要忘记 return 一个已解决的承诺,而不是直接缓存值 如果缓存存在