Код Senior Реализация с нуля обновлено

Запросы с кэшем и дедупликацией

Условие

createLoader(load): возвращает функцию get(key). Повторный запрос того же ключа берётся из кэша; параллельные запросы одного ключа схлопываются в один вызов load. Ошибка не кэшируется.

Что проверяют тесты

  • кэширует результат

  • схлопывает параллельные

  • разные ключи - разные вызовы

  • ошибка не кэшируется

Как подойти

Кэш промисов вместо кэша значений решает дедупликацию бесплатно: второй вызов до разрешения первого получает тот же промис. Удаление записи при ошибке обязательно - иначе одна сетевая неудача закроет ключ до перезагрузки страницы. Это ядро SWR, React Query и DataLoader.

Подсказки: 2
  1. Кэшируй промис, а не результат - тогда параллельные вызовы получат один и тот же.
  2. При ошибке удаляй запись, иначе неудача запомнится навсегда.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.