所以我让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/