Код Senior Реализация с нуля обновлено
Запросы с кэшем и дедупликацией
Условие
createLoader(load): возвращает функцию get(key). Повторный запрос того же ключа берётся из кэша; параллельные запросы одного ключа схлопываются в один вызов load. Ошибка не кэшируется.
Что проверяют тесты
кэширует результат
схлопывает параллельные
разные ключи - разные вызовы
ошибка не кэшируется
Как подойти
Кэш промисов вместо кэша значений решает дедупликацию бесплатно: второй вызов до разрешения первого получает тот же промис. Удаление записи при ошибке обязательно - иначе одна сетевая неудача закроет ключ до перезагрузки страницы. Это ядро SWR, React Query и DataLoader.
Подсказки: 2
- Кэшируй промис, а не результат - тогда параллельные вызовы получат один и тот же.
- При ошибке удаляй запись, иначе неудача запомнится навсегда.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.