DOM и React Senior DOM на практике обновлено

Живой поиск с отменой

Условие

attachSearch(input, search, render, wait): по вводу с задержкой wait вызывает search(query) и передаёт результат в render. Ответы на устаревшие запросы игнорируются. Верни функцию отписки.

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

  • схлопывает ввод в один запрос

  • медленный старый ответ не перетирает новый

  • отписка снимает всё

Как подойти

Две независимые проблемы, которые путают: debounce уменьшает количество запросов, счётчик последовательности защищает от прихода ответов не по порядку. Нужны обе - быстрый третий запрос легко обгонит первый. Промышленная версия добавляет AbortController, чтобы не тратить сеть на отменённое.

Подсказки: 3
  1. Задержка решает задачу лишних запросов, но не задачу порядка ответов.
  2. Нумеруй запросы и применяй только последний.
  3. Отписка должна снимать и слушатель, и висящий таймер.

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

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