diff options
Diffstat (limited to 'build-es/memoize.js')
-rw-r--r-- | build-es/memoize.js | 37 |
1 files changed, 0 insertions, 37 deletions
diff --git a/build-es/memoize.js b/build-es/memoize.js deleted file mode 100644 index 8e66b85..0000000 --- a/build-es/memoize.js +++ /dev/null @@ -1,37 +0,0 @@ -'use strict'; - -import identity from 'lodash-es/identity'; -import rest from 'lodash-es/rest'; -import has from 'lodash-es/has'; - -import setImmediate from './internal/setImmediate'; - -export default function memoize(fn, hasher) { - var memo = Object.create(null); - var queues = Object.create(null); - hasher = hasher || identity; - var memoized = rest(function memoized(args) { - var callback = args.pop(); - var key = hasher.apply(null, args); - if (has(memo, key)) { - setImmediate(function() { - callback.apply(null, memo[key]); - }); - } else if (has(queues, key)) { - queues[key].push(callback); - } else { - queues[key] = [callback]; - fn.apply(null, args.concat([rest(function(args) { - memo[key] = args; - var q = queues[key]; - delete queues[key]; - for (var i = 0, l = q.length; i < l; i++) { - q[i].apply(null, args); - } - })])); - } - }); - memoized.memo = memo; - memoized.unmemoized = fn; - return memoized; -} |