我正在使用 node.js express 编写服务。我有计时器的问题。
我根本不存储任何状态,在我的路由中具有2个功能。
rout.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。
注意:在评论中,我调用了我的模型的方法,这也是无状态的。
跟踪所有计时器参考并不容易。您可以做的一件事是针对每个请求存储确认状态。确认后,将状态设置为确认。在计时器结束时删除记录之前,请检查此状态,如果确认,请勿删除请求。这样,您将不会取消计时器以确认请求,但是这些请求不会在超时时删除。