artdaq_node_server  v1_00_07
 All Classes Namespaces Files Variables Pages
memoize.js
1 var MapCache = require('./_MapCache');
2 
4 var FUNC_ERROR_TEXT = 'Expected a function';
5 
50 function memoize(func, resolver) {
51  if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {
52  throw new TypeError(FUNC_ERROR_TEXT);
53  }
54  var memoized = function() {
55  var args = arguments,
56  key = resolver ? resolver.apply(this, args) : args[0],
57  cache = memoized.cache;
58 
59  if (cache.has(key)) {
60  return cache.get(key);
61  }
62  var result = func.apply(this, args);
63  memoized.cache = cache.set(key, result) || cache;
64  return result;
65  };
66  memoized.cache = new (memoize.Cache || MapCache);
67  return memoized;
68 }
69 
70 // Expose `MapCache`.
71 memoize.Cache = MapCache;
72 
73 module.exports = memoize;