Skip to content

memoize 缓存函数

memoize 缓存函数结果,并使用 LRU 策略淘汰最久未访问的条目。同步函数和返回 Promise 的异步函数都适用。

API

ts
memoize(fn, max?: number)
memoize(fn, { max?: number, resolver?: (...args) => unknown })
  • max:最大缓存条目数,默认 1000 表示不缓存。
  • resolver:自定义 key 生成器,适合对象参数或需要按 id 缓存的场景。
  • 返回函数额外提供 clear()delete(...args)cacheSize

示例

ts
import { memoize } from 'cat-tool';

const calculate = memoize(
  (x: number, y: number) => Promise.resolve(x * x + y * y),
  { max: 50, resolver: (x, y) => `${x}:${y}` },
);

console.log(await calculate(2, 3)); // 执行原函数
console.log(await calculate(2, 3)); // 命中缓存
calculate.clear();

基于 MIT 许可发布