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

时间:2016-07-05 23:48:43

标签: javascript lodash

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

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

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

3 个答案:

答案 0 :(得分:9)

Lodash没有提供删除所有记忆功能的缓存的方法。你必须一个接一个地做。这是因为每个memoized函数都有自己的缓存对象实例。

请查看lodash echo "<td>". (($row['doc_type'] == '2') ? "$doc_number" : "") . "</td>"; source code

echo "<td>". (($row['doc_type'] == '2') ? "$doc_number" : "") . "</td>";

您提到的GitHub讨论是关于清除单个记忆功能的缓存。

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

mysql

答案 1 :(得分:2)

function _printName(name) {
  console.log(name);
}

const printName = _.memoize(_printName);

printName("David");
printName("John");

要清除整个记录的缓存(David和John):

printName.cache.clear();

要显式删除单个记忆的对象,请执行以下操作:

printName.cache.delete("David");

答案 2 :(得分:1)

在2019年更新答案:),lodash为缓存方法添加了清除功能,因此可以清除缓存的方法

memoizedFunctions.forEach(f => f.cache.clear());

经过测试的lodash版本4.17.13