跳到主要内容

memoize [回忆]

TS JS Deno

返回回忆(缓存)功能。

通过实例化新的 Map 对象来创建一个空的缓存。 返回一个函数,该函数首先检查该函数的特定输入值的输出是否已被缓存,或者存储并返回,该函数是否已提供给了记忆的函数。必须使用 function 关键字,以便在必要时更改记忆的函数 this 上下文''。 通过将其设置为返回函数上的属性,允许访问 cache

typescript
const memoize = <T = any>(fn: Func<T>) => {
const cache = new Map();
const cached = function (this: any, val: T) {
return cache.has(val)
? cache.get(val)
: cache.set(val, fn.call(this, val)) && cache.get(val);
};
cached.cache = cache;
return cached;
};
typescript
// See the `factorial` snippet.
const factorialCache = memoize(factorial);
factorialCache(6); // 720, little bit slow
factorialCache(6); // 720, slightly faster

// To get all cache
console.log(factorialCache.cache);