将函数限制为每 5 分钟仅 运行 一次(即使调用多次)
Limit function to only running once (even if called multiple times) per 5 minutes
我的 Express/Node API 中有一个函数,它在执行某些操作后实质上会执行 'roundup' 数据。
用户可以在短时间内多次执行操作(调用 API 路由)。这个API路由被调用后,roundup函数被调用。我不想每次都调用它;例如每 5 分钟一次(尽管仍然由 API 操作触发)。
我真的只关心 final 调用(因为 roundup 使用该信息更新其他数据,但较早的数据没问题,只要它们相距一定距离(而不是连续)。
基本上我想要的是:
- 即使调用 roundup 函数 20 次,比方说 5 分钟,也只有 运行 一次
我试过使用 lodash 的去抖动功能;但它对我来说仍然不能正常工作。
例如...(不是真正的代码,而是基础结构)
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 调用是单独的,所以我认为它们不会像我预期的那样触发去抖动。
您需要在 post 方法的 外部 创建去抖器,否则每次 API 被调用,它对之前的触发一无所知。
let debounced_roundup = _.debounce(roundup, 300000);
// API Route which will call roundup when finished
app.post('/list/join', (req, res) => {
debounced_roundup();
});
我的 Express/Node API 中有一个函数,它在执行某些操作后实质上会执行 'roundup' 数据。
用户可以在短时间内多次执行操作(调用 API 路由)。这个API路由被调用后,roundup函数被调用。我不想每次都调用它;例如每 5 分钟一次(尽管仍然由 API 操作触发)。
我真的只关心 final 调用(因为 roundup 使用该信息更新其他数据,但较早的数据没问题,只要它们相距一定距离(而不是连续)。
基本上我想要的是: - 即使调用 roundup 函数 20 次,比方说 5 分钟,也只有 运行 一次
我试过使用 lodash 的去抖动功能;但它对我来说仍然不能正常工作。
例如...(不是真正的代码,而是基础结构)
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 调用是单独的,所以我认为它们不会像我预期的那样触发去抖动。
您需要在 post 方法的 外部 创建去抖器,否则每次 API 被调用,它对之前的触发一无所知。
let debounced_roundup = _.debounce(roundup, 300000);
// API Route which will call roundup when finished
app.post('/list/join', (req, res) => {
debounced_roundup();
});