Асинхронный JavaScriptТаймерыmedium

Cache With Time Limit

Необходимо реализовать класс TimeLimitedCache, позволяющий хранить значения в формате ключ-значения. При этом для каждого ключа устанавливается время жизни — через такое время (в миллисекундах) установки значения ключа он пропадает из кэша.

У класса должно быть реализовано 3 метода:

  • set(key, value, duration) — принимает ключ, значение и время жизни ключа. Если на момент установки значения по ключу такой ключ уже был, то метод возвращает true, иначе false. В обоих случая устанавливается новое значение.

  • get(key) — если в кэше есть такой ключ возвращает его значение, если нет — число -1.

  • count() — возвращает количество ключей в кэше на момент вызова.

const cache = new TimeLimitedCache(); setTimeout(() => console.log(cache.set(1, 500, 450)), 0); // false setTimeout(() => console.log(cache.get(1)), 100); // 500 setTimeout(() => console.log(cache.set(2, 600, 350)), 200); // false setTimeout(() => console.log(cache.get(2)), 300); // 600 setTimeout(() => console.log(cache.count()), 400); // 2 setTimeout(() => console.log(cache.set(2, 800, 250)), 500); // true setTimeout(() => console.log(cache.count()), 600); // 1 setTimeout(() => console.log(cache.get(2)), 700); // 800