Lodash memoize如何删除自定义resolver生成的复杂key对应缓存条目
你猜测的写法是正确的,可正常删除指定缓存条目,相关逻辑说明如下:
- lodash 中通过
_.memoize生成的缓存函数会挂载cache属性存储全量缓存数据,缓存键完全由你传入的自定义resolver函数(也就是示例中的serializeArgs)的返回值决定。 - 删除时只要传入和目标缓存调用时完全一致的参数,通过同一个resolver计算得到缓存键,即可精准匹配到要删除的条目。
补充注意:
- 该写法默认适用的前提是你没有修改过全局的
_.memoize.Cache配置,lodash默认使用原生Map作为缓存存储容器,因此支持delete方法。如果你自定义配置过缓存为普通对象存储,需要改用delete myMemoizedFunction.cache[serializeArgs("horse", true)]的写法。- 如果需要清空该缓存函数的所有条目,可直接调用
myMemoizedFunction.cache.clear()实现。
内容的提问来源于stack exchange,提问作者chichilatte
相关产品推荐
相关产品推荐

