import moment from 'moment'; export class AUniqCache { hourMap = {}; name = ''; keepHours = 2; constructor (name?) { this.name = name; } remove(item) { const hour = moment().format('YYYY-MM-DD.HH'); delete this.hourMap[hour][item]; } add(item) { const hour = moment().format('YYYY-MM-DD.HH'); this.hourMap[hour] = { ...this.hourMap[hour], [item]: 1 }; this.cleanMap(); } cleanMap() { const minute = moment().minute(); const hours = Object.keys(this.hourMap); if (minute === 0) { for (const h of hours) { if (moment().diff(moment(h), 'hours') > this.keepHours) { // 如果当前时间超过2小时 delete this.hourMap[h]; } } } } has(item) { const hours = Object.keys(this.hourMap); for (const h of hours) { if (this.hourMap[h] && this.hourMap[h][item]) { return true; } } return false; } isValid(item) { return !this.has(item); } }