我正在使用 node.js + express 编写服务。我有计时器的问题。
我根本不存储任何状态,在路径中有2个功能。
route.js
var timeOutId;
exports.linkUpRequest = function() {
// do some request to another user => insert record in db
...
timeOutId = setTimeout(function() {
//delete request => delete record from db
}, 1000 * 60 * 60);
res.send(...);
};
exports.confirm = function() {
// record will be stored until user explicitly delete it => update that user confirm request
clearTimeout(timeOutId);
res.send(...);
};
我知道这是错误的解决方案,因为它是服务器,许多用户可以访问timeOutId
变量。我的问题是如何处理 REST 服务中的计时器和超时ID。
注意:在评论中,我调用模型中的方法,这也是无状态的。
答案 0 :(得分:1)
跟踪所有计时器参考并不容易。您可以做的一件事是在db中针对每个请求存储确认状态。确认后,将状态设置为已确认。在计时器结束时删除记录之前检查此状态,如果确认不删除请求。这样您就不会取消已确认请求的计时器,但这些请求在超时时不会被删除。