I would like to memoize results of function based on provided arguments. For example:
getFiles('/articles/en')
getFiles('/articles/pl')
This invocations should be independent and should have standalone cached results. Currently I always receive the result from the first call.
I tried used other library than memoizee. With fast-memoize I got expected effect, but fast-memoize doesn't allow set maxAge of cached results.
// Services to fetch files
const memoize = require('memoizee')
async function getFile (id) {/*...*/}
async function getFiles (folder) {/*...*/}
const getFilesWithCache = memoize(getFiles, { maxAge: 86400000, promise: true })
const getFileWithCache = memoize(getFile, { maxAge: 86400000, promise: true })
module.exports = {
getFile,
getFiles
getFilesWithCache,
getFileWithCache
}
//First call
let files = await getFilesWithCache('articles/en')
//Second call
files = await getFilesWithCache('articles/pl')
In second call the result is the same as in the first call.
I sorted out this problem with promise-memoize library.