首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在node.js中使用回忆录

在node.js中使用回忆录
EN

Stack Overflow用户
提问于 2017-07-14 17:12:41
回答 1查看 1.7K关注 0票数 3

我想在我的回忆录后端上使用node.js,以加快请求速度。

但出于某种原因,我无法让它像我想的那样工作。我有一个路由,它等待另一个方法的回调,但是不管我在缓存中保存结果多长时间,它每次都运行整个方法。

我做错了什么?

这里是我的实现的一个例子。

代码语言:javascript
复制
var memoize = require('memoizee');

module.exports = function (app) {

app.route('/someurl/:user_id')
    .get(function (req, res) {

        var user_id = req.params.user_id;

        memoized(user_id, function (result) {      
            res.send(result)
        })
    });
};

var doWork = memoize(function(user_id, done) {
    //Handling a lot of data - takes about 10-15 seconds
    done(index);
});

var memoized = memoize(doWork, {maxAge: 300000});
EN

回答 1

Stack Overflow用户

发布于 2017-07-18 13:00:24

有两个问题:

  1. 由于有两个功能参数,回忆录回忆录对这两个。 很可能每个调用的done回调都是不同的,因此每次都会看到函数重新运行。 怎么修呢?首先,通过在选项中传递{ length: 1 },您可以将回忆录的范围限制在仅仅第一个参数上。其次,我认为它是一个异步函数,您可以尝试回忆录,因为最好在回忆录中使用asyncpromise配置选项(参见文档)
  2. 正如@Bergi所指出的,你试图回忆录已经回忆录的功能。第二次回忆录(一次使用maxAge)没有任何效果,因为回忆录内部检测到了您想要做的事情,而忽略了第二次调用。应该只有一个回忆录包装(选项可以合并,这是没有问题的)。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45108429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档