JSFiddle - React, Tailwind, and code Playground
by belorion
JavaScript
// A hash whose values disappear after a while
var FadingHash = (function () {
var fadingHash = function (opts) {
var self = this;
var hash = {};
var timestamp = {};
opts = opts || {};
var lifetime = opts.lifetime || 10 * 1000; // seconds
var onNewCallback = opts.onNewCallback;
this.get = function (key) {
if (key in timestamp === false) { return undefined; }
var time = timestamp[key];
var now = new Date();
if (now - time > lifetime) {
delete hash[key];
delete timestamp[key];
}
return hash[key];
};
this.set = function (key, value) {
// trigger lazy removal
self.get(key);
var isNew = false;
if (key in hash === false) {
isNew = true;
}
hash[key] = value;
timestamp[key] = new Date();
if (isNew && onNewCallback !== undefined) {
onNewCallback(key, value);
}
};
};
return fadingHash;
})();
var notify = function(){ console.log('new3!'); }
var f = new FadingHash({lifetime: 5000, onNewCallback: notify});
f.set(1, 2);
f.set(1, 2);
setTimeout(function(){ f.set(1,2);}, 6500);