javascript - 需要跟踪 setTimeout 调用,以防以后需要取消它们吗?

标签 javascript node.js timer settimeout

所以我让nodejs运行一个express服务器,我们的一个端点需要启动一个10分钟的计时器,并在这10分钟结束时执行一些代码。我使用 setTimeout 来执行此操作,并将其存储在变量中。

现在,如果用户执行操作并进行不同的 api 调用,我们不再需要在这十分钟结束时执行代码。但要取消的正确 setTimeout 取决于一个特殊变量。

如何跟踪许多 setTimeout 变量?我是否应该有一个全局 hashmap 将特殊变量映射到 setTimeout,然后在第二个 api 调用中传递特殊 var 来识别正确的 setTimeout 来调用clearTimeout?

这是我能想到的唯一方法,但对于可能负载较重的 Node.js 服务器,我不确定仅添加到 HashMap 或数组是否是正确的解决方案。预先感谢!

// start countdown timer for 10 minutes
  let offerTimer = setTimeout(function() {  
    // some code
  }, 60000 * 0.25);

其他一些快速 Controller 功能

if (req.body.accepted == true) {
   // need to clear the interval associated with req.body.jobpost_id
}

最佳答案

您可以将计时器变量存储在全局映射中,但在 Node 中设置许多计时器是一个不好的做法。相反,最好使用 Redis,为每个用户设置 Redis ttl。 https://redis.io/commands/TTL 。 或者使用其他作业调度程序(议程、 Node 调度等)。

关于javascript - 需要跟踪 setTimeout 调用,以防以后需要取消它们吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55386706/

相关文章:

ios - 如何快速检查当前时间是否大于 jwt exp(expiration time)?

c++ - getrusage() 获取系统时间、用户时间。 Unix编程帮助

java - 创建倒计时但显示 (x-1) :00 bug

javascript - 如何在 Angular 页面中接收 GET 请求?

javascript - Jquery 数据表在 IE9 上呈现缓慢

node.js - Nodejs session 管理与 java 服务器 session 管理比较

javascript - 在 javascript/nodejs 中搜索并替换所有内容

javascript:如何将字符串数组转换为连接以逗号分隔的项目的纯字符串?

javascript - 停止垂直线滚动

javascript - 使用加密nodejs解密大文件