备忘录-根据参数缓存

时间:2019-06-19 18:21:35

标签: javascript node.js memoization memoizee

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

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

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

我尝试使用除备忘录以外的其他库。使用快速记忆,我得到了预期的效果,但是快速记忆不允许设置缓存结果的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')

第二次通话的结果与第一次通话相同。

1 个答案:

答案 0 :(得分:0)

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