Files
railwaysystem/RuoYi-Vue/ruoyi-ui/node_modules2/@antv/util/src/memoize.ts
T

31 lines
758 B
TypeScript
Raw Normal View History

2026-09-10 15:40:10 +08:00
import isFunction from './is-function';
/**
* _.memoize(calColor);
* _.memoize(calColor, (...args) => args[0]);
* @param f
* @param resolver
*/
export default (f: Function, resolver?: (...args: any[]) => string) => {
if (!isFunction(f)) {
throw new TypeError('Expected a function')
}
const memoized = function(...args) {
// 使用方法构造 key,如果不存在 resolver,则直接取第一个参数作为 key
const key = resolver ? resolver.apply(this, args) : args[0];
const cache = memoized.cache;
if (cache.has(key)) {
return cache.get(key)
}
const result = f.apply(this, args);
// 缓存起来
cache.set(key, result);
return result
};
memoized.cache = new Map();
return memoized
}