在 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 一个已解决的承诺,而不是直接缓存值 如果缓存存在