【发布时间】:2020-01-02 02:02:42
【问题描述】:
我的 Express/Node API 中有一个函数,在执行某些操作后,它本质上是对数据进行“汇总”。
用户可以在短时间内多次执行操作(调用 API 路由)。调用此 API 路由后,将调用 roundup 函数。我不希望每次都调用它;例如,每 5 分钟一次(尽管仍然由 API 操作触发)。
我真的只关心 final 调用(因为综述使用该信息来更新其他数据,但早期的没问题,只要它们相距很远(而不是连续的)。
基本上我想要的是: - 即使综合函数被调用 20 次,比如说 5 分钟,也只运行一次
我已经尝试过为此使用 lodash 的 debounce 功能;但它对我来说仍然无法正常工作。
例如...(不是真正的代码,而是基本结构)
function roundup(){
// Do something here, but it's DB intensive and we really only care about the *final call* so only want it to run sometimes (?)
}
// API Route which will call roundup when finished
app.post('/list/join', (req, res) => {
// my lodash attempt
let debounced_roundup = _.debounce(roundup, 300000);
debounced_roundup();
});
我预计去抖会一直调用综合函数直到延迟 (300000) 之后,但由于 API 调用是单独的,我认为它们不会像我预期的那样触发去抖。
【问题讨论】:
标签: node.js api express queue limit