diff options
Diffstat (limited to 'node_modules/mem/readme.md')
-rw-r--r-- | node_modules/mem/readme.md | 74 |
1 files changed, 27 insertions, 47 deletions
diff --git a/node_modules/mem/readme.md b/node_modules/mem/readme.md index add4222b6..7ebab84f0 100644 --- a/node_modules/mem/readme.md +++ b/node_modules/mem/readme.md @@ -2,13 +2,11 @@ > [Memoize](https://en.wikipedia.org/wiki/Memoization) functions - An optimization used to speed up consecutive function calls by caching the result of calls with identical input -Memory is automatically released when an item expires. - ## Install ``` -$ npm install mem +$ npm install --save mem ``` @@ -24,11 +22,11 @@ const memoized = mem(counter); memoized('foo'); //=> 1 -// Cached as it's the same arguments +// cached as it's the same arguments memoized('foo'); //=> 1 -// Not cached anymore as the arguments changed +// not cached anymore as the arguments changed memoized('bar'); //=> 2 @@ -42,37 +40,35 @@ memoized('bar'); const mem = require('mem'); let i = 0; -const counter = async () => ++i; +const counter = () => Promise.resolve(++i); const memoized = mem(counter); -(async () => { - console.log(await memoized()); +memoized().then(a => { + console.log(a); //=> 1 - // The return value didn't increase as it's cached - console.log(await memoized()); - //=> 1 -})(); + memoized().then(b => { + // the return value didn't increase as it's cached + console.log(b); + //=> 1 + }); +}); ``` ```js const mem = require('mem'); const got = require('got'); -const delay = require('delay'); - const memGot = mem(got, {maxAge: 1000}); -(async () => { - await memGot('sindresorhus.com'); - - // This call is cached - await memGot('sindresorhus.com'); - - await delay(2000); - - // This call is not cached as the cache has expired - await memGot('sindresorhus.com'); -})(); +memGot('sindresorhus.com').then(() => { + // this call is cached + memGot('sindresorhus.com').then(() => { + setTimeout(() => { + // this call is not cached as the cache has expired + memGot('sindresorhus.com').then(() => {}); + }, 2000); + }); +}); ``` @@ -88,8 +84,6 @@ Function to be memoized. #### options -Type: `Object` - ##### maxAge Type: `number`<br> @@ -110,14 +104,7 @@ You could for example change it to only cache on the first argument `x => JSON.s Type: `Object`<br> Default: `new Map()` -Use a different cache storage. Must implement the following methods: `.has(key)`, `.get(key)`, `.set(key, value)`, `.delete(key)`, and optionally `.clear()`. You could for example use a `WeakMap` instead or [`quick-lru`](https://github.com/sindresorhus/quick-lru) for a LRU cache. - -##### cachePromiseRejection - -Type: `boolean`<br> -Default: `false` - -Cache rejected promises. +Use a different cache storage. Must implement the following methods: `.has(key)`, `.get(key)`, `.set(key, value)`, and optionally `.clear()`. You could for example use a `WeakMap` instead. ### mem.clear(fn) @@ -146,22 +133,15 @@ const got = require('got'); const cache = new StatsMap(); const memGot = mem(got, {cache}); -(async () => { - await memGot('sindresorhus.com'); - await memGot('sindresorhus.com'); - await memGot('sindresorhus.com'); +memGot('sindresorhus.com') + .then(() => memGot('sindresorhus.com')) + .then(() => memGot('sindresorhus.com')); - console.log(cache.stats); - //=> {hits: 2, misses: 1} -})(); +console.log(cache.stats); +//=> {hits: 2, misses: 1} ``` -## Related - -- [p-memoize](https://github.com/sindresorhus/p-memoize) - Memoize promise-returning & async functions - - ## License MIT © [Sindre Sorhus](https://sindresorhus.com) |