
p-async-cache
Cache the promise lookups and avoid fetching the same thing more than necessary.
Install
$ npm install p-async-cache --save
Usage
import PAC from 'p-async-cache'
let counter = 0
const cache = new PAC({
async load (userId) {
counter ++
return await getUserFromRemote(userId)
}
})
function get () {
cache.get(123).then(({value}) => {
console.log(value, counter)
})
}
get()
get()
new AC(options)
- options
Object=
- stale
Boolean
whether allow stale value
- stringify
function()=JSON.stringify
method to serialize the params
to a cache key.
- load
AsyncFunction(...params)|function(...params):Promise|function(...params)
accepts a normal synchronous function, a function that returns a promise, or an async function, and the params
will be the parameters of the .get(...params)
method.
- other options that lru-cache supports
Example for options.stale
import delay from 'delay'
const cache = new AC({
stale: true,
maxAge: 100,
load (a, b) {
return delay(1).then(() => a + b)
}
})
cache.get(1, 2)
.then(({value, stale}) => {
console.log(value)
console.log(stale)
return delay(101).then(() => cache.get(1, 2))
})
.then(({value, stale}) => {
console.log(value)
console.log(stale)
return delay(10).then(() => cache.get(1, 2))
})
.then(({value, stale}) => {
console.log(value)
console.log(stale)
})
.get(...params)
- params
any
that will be passed into options.load(...params)
Returns Promise
Lookup the value in the cache,
- if found, then return.
- if not found,
- if allow stale values, and the value is stale, then return the value, and refresh value in background.
- otherwise, load the value with
load(...params)
Other methods of lru-cache
.reset()
.has(...params)
.peek(...params)
.del(...params)
License
MIT