Старый TTL-таймер нужно отменять при перезаписи или удалении записи, а его callback должен проверять, что не удаляет уже новое значение того же ключа.
Что нужно сделать с `setTimeout` в реализации TTL-кэша?
Старый TTL-таймер нужно отменять при перезаписи или удалении записи, а его callback должен проверять, что не удаляет уже новое значение того же ключа.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Старый TTL-таймер нужно отменять при перезаписи или удалении записи, а его callback должен проверять, что не удаляет уже новое значение того же ключа.
Храните timer id вместе с записью и очищайте все таймеры при clearCache. Для точной семантики дополнительно проверяйте expiresAt при чтении: таймер может сработать позже из-за занятого потока или фоновой вкладки. Большому кешу множество отдельных таймеров может быть дорого; тогда рассматривают общую периодическую очистку или очередь сроков.