Read this in other languages: 简体中文
Memoize based on Proxy.
- Works with any type, any length of function arguments - optional serialization.
- Support for promises and asynchronous functions.
- Configurable weak provides a WeakMap (friendly garbage collection).
- Cache can be managed manually.
- Cache size can be limited on LRU basis.
- Optional reference counter mode, that allows more sophisticated cache management.
- unit tests.
Property | Description | Type | Default |
---|---|---|---|
normalizer | Generates a unique value based on the current parameter | (args: any[]) => string | Array.from(argument).join(',') |
weak | Using WeakMap | boolean | false |
maxAge | Timeout duration, expired delete | number | undefined |
max | Maximum number of items stored | number | undefined |
manual | Enable manage the cache manually | boolean | false |
refCounter | Enable reference counting | boolean | false |
dispose | Called right before an item is evicted from the cache | (value: T) => void | undefined |
closeable | Provide use cache toggle function | boolean | false |
npm install memoizee-proxy
or
yarn add memoizee-proxy
import {memoizee} from 'memoizee-proxy'
var fn = function(one, two, three) {
/* ... */
};
var memoized = memoizee(fn);
memoized("foo", 3, "bar");
memoized("foo", 3, "bar"); // Cache hit
var afn = function(a, b) {
return new Promise(function(res) {
res(a + b);
});
};
memoized = memoize(afn, { promise: true });
memoized(3, 7);
memoized(3, 7); // Cache hit
- The build tool was changed from microbundle to tsdx
- Add the closeable parameter to operate on and off the cache
- Modify the packaging tool to Rome (modify the default export)
- Export the other two cache classes ExpiredLRUCache RefCache
- fix cacheRef clear method missing cacheRef cleanup.
- remove "max" and "maxAge" options cannot exist at the same time.
- fix the options "max". if the added value is greater than or equal to max, throw error.
- Basically completed, added max, maxAge to provide data management.
- Manual is added to control the cache manually.
- Reference count cache added.
- Add the dispose function to call the control value when deleting data.
- Add unit tests.
- Basically available, add parameters "normalizer"、 "weak" 、"timeout"