123456789101112131415161718192021222324252627282930313233343536373839 |
- "use strict";
- const cacheStore = new WeakMap();
- function memorize(fn, {
- cache = new Map()
- } = {}, callback) {
-
- const memoized = (...arguments_) => {
- const [key] = arguments_;
- const cacheItem = cache.get(key);
- if (cacheItem) {
- return cacheItem.data;
- }
-
- let result = fn.apply(this, arguments_);
- if (callback) {
- result = callback(result);
- }
- cache.set(key, {
- data: result
- });
- return result;
- };
- cacheStore.set(memoized, cache);
- return memoized;
- }
- module.exports = memorize;
|