memoize 缓存函数
memoize 缓存函数结果,并使用 LRU 策略淘汰最久未访问的条目。同步函数和返回 Promise 的异步函数都适用。
API
ts
memoize(fn, max?: number)
memoize(fn, { max?: number, resolver?: (...args) => unknown })max:最大缓存条目数,默认100,0表示不缓存。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();