memoizee - 基于参数缓存

memoizee - Cached based on arguments

我想根据提供的参数记住函数的结果。 例如:

getFiles('/articles/en')
getFiles('/articles/pl')

此调用应该是独立的,并且应该有独立的缓存结果。目前我总是收到第一个电话的结果。

我试过使用 memoizee 以外的其他库。使用 fast-memoize 我得到了预期的效果,但是 fast-memoize 不允许设置缓存结果的 maxAge。

// 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')

第二次调用结果与第一次调用相同。

我用 promise-memoize 库解决了这个问题。