Advertisement
Guest User

Untitled

a guest
Aug 23rd, 2017
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.94 KB | None | 0 0
  1. DEFAULT_CACHE_TIME_MS = 262144; // ~5 minutes (closest 1-bin value)
  2.  
  3. export default class TimeCache extends Map {
  4. constructor(cacheTime, seed) {
  5. super(seed);
  6. this.cacheTime = cacheTime || DEFAULT_CACHE_TIME_MS;
  7. }
  8.  
  9. set(key, value, cacheTime) {
  10. super.set(key, {
  11. expires: Date.now() + (cacheTime || this.cacheTime),
  12. data: value
  13. });
  14. }
  15.  
  16. get(key) {
  17. var entry = super.get(key);
  18. if (entry && Date.now() < entry.expires) {
  19. return entry.data;
  20. } else if (entry) {
  21. super.delete(key);
  22. }
  23. }
  24.  
  25. has(key) {
  26. if (super.has(key)) {
  27. var entry = super.get(key);
  28. if (entry && Date.now() < entry.expires) {
  29. return super.has(key);
  30. } else if (entry) {
  31. super.delete(key);
  32. }
  33. }
  34. return false;
  35. }
  36.  
  37. static get [Symbol.species]() { return Map; }
  38. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement