javascript - lodash 中如何删除整个 memoize 缓存?

标签 javascript lodash memoization

当使用 lodash 中的 _.memoize 时,是否可以删除整个缓存?

我在github上看到了一些讨论: https://github.com/lodash/lodash/issues/1269 https://github.com/lodash/lodash/issues/265

但我仍然不是 100% 清楚如何处理,如果您想清除页面范围的缓存?是否打算先将其设置为 WeakMap,然后根据需要调用 clear?

最佳答案

Lodash 不提供删除所有内存函数缓存的方法。你必须一项一项地做。这是因为每个内存函数都有自己的缓存对象实例。

看lodash memoize source code :

function memoize(func, resolver) {
  var memoized = function() {
    // ...
  }
  memoized.cache = new (memoize.Cache || MapCache);
  return memoized;
}

您提到的 GitHub 讨论是关于清除单个内存函数的缓存。

您可以将所有内存函数保存到一个数组中,以便它能够迭代它们并一个一个地清除缓存。

const func1 = _.memoize(origFunc1);
const func2 = _.memoize(origFunc2);

const memoizedFunctions = [];
memoizedFunctions.push(func1);
memoizedFunctions.push(func2);   

// clear cache of all memoized functions
memoizedFunctions.forEach(f => f.cache = new _.memoize.Cache);

关于javascript - lodash 中如何删除整个 memoize 缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38214551/

相关文章:

javascript - 如何在 Highcharts 中以不同颜色显示我的标签和每个 x 轴的完整日期?

javascript - 如果失败,如何继续使用 jQuery ajax 调用 API 直到 3 次?

javascript - 等待数据返回,与 Angular 和 Breeze 同步调用

javascript - 检查数组中的项目,是否有打印 JS/HTML 中的特定文本

javascript - 内存一个原型(prototype)方法

haskell - GHC 如何知道如何缓存一个函数而不是其他函数?

javascript - 如果具有相同的 id,如何将数组对象值合并到数组

javascript - Lodash:过滤然后映射到一个对象

javascript - 在 JavaScript 中对集合中的某些键执行转换

java - 动态规划解法讲解