Код Middle Компоненты и стили спрашивают часто обновлено

Дебаунс поиска при вводе

Условие

Поле поиска вызывает API на каждый символ. Напишите debounce(fn, ms): возвращает функцию, которая откладывает вызов fn на ms миллисекунд после последнего вызова, передавая последние аргументы. У возвращаемой функции есть метод cancel(), отменяющий отложенный вызов (его зовут при размонтировании экрана).

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

  • один вызов через ms

  • серия вызовов даёт один с последними аргументами

  • таймер сбрасывается каждым вызовом

  • паузы дают отдельные вызовы

  • cancel отменяет отложенный вызов

  • после cancel функция снова работает

  • передаются все аргументы

Как подойти

Подсказки: 2
  1. Храните id таймера в замыкании и вызывайте clearTimeout перед новым setTimeout.
  2. cancel можно повесить как свойство функции.

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

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