![](/img/trans.png)
[英]How to implement “forgot/reset password” feature properly in Node.js? (Using one time token)
[英]How to implement properly expire feature for collection in Node.js?
我想实现一个元素可以过期并被删除的集合。 因为我对 Javascript 没有什么经验,所以找不到最好的方法。 在另一种语言中,我会使用一个线程来迭代清理过期元素的集合。 但是在 Javascript 中,这是不可能的,除了使用setInterval
function 之外,我想不出解决方案。因此每次插入一个元素时,都会注册一个回调 function,以便稍后清理该元素。
class Collection {
constructor() {
this.items = new Map()
}
put(key, value, expireIn) {
this.items.set(key, value)
setInterval(() => {
this.items.delete(key)
}, expireIn)
}
get(key) {
return this.items.get(key)
}
}
你认为这种方法会有一些限制吗? 例如,多次调用setInterval
是否可以? 还有其他方法可以实现吗?
您的方法从根本上来说是合理的。 但是,您对 Intervals 的使用存在问题。
看起来您为集合中的每个项目设置了一个单独的间隔,其目的是在其生存时间到期时将其删除。 但是间隔会重复,直到您取消它们。 您可能应该在这里使用超时。 如果某个项目以某种方式从您的收藏中删除,请务必取消其超时。
处理此类事情的更有效方法:
为此,我使用了一个名为 node-cache 的模块。 https://www.npmjs.com/package/node-cache在几个月的正常运行时间和计数中,它对我来说完美无瑕。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.