7. Реализация debounce

Легко
debounceclosurestimer

Реализуйте функцию debounce, которая откладывает вызов переданной функции до тех пор, пока не пройдёт заданное время после последнего вызова.

Каждый способ должен быть реализован независимо в своём контейнере:

  1. Функция должна откладывать вызов на delay миллисекунд
  2. При повторном вызове таймер должен сбрасываться
  3. Аргументы должны передаваться в оригинальную функцию
  4. Контекст this должен сохраняться

Реализуйте функцию debounce(fn, delay), которая: - Возвращает новую функцию - При вызове возвращённой функции откладывает выполнение fn на delay мс - Если функция вызвана снова до истечения delay, таймер сбрасывается - Передаёт аргументы и контекст this в оригинальную функцию Пример использования: const debouncedSearch = debounce((query) => fetch('/search?q=' + query), 300); input.addEventListener('input', (e) => debouncedSearch(e.target.value));

Примеры

Пример 8
Вход:
debounce(fn, 100): вызов, пауза 50мс, вызов, пауза 100мс
Ожидаемый результат:

fn вызвана 1 раз (после последнего вызова + 100мс)

Подсказка:

Каждый новый вызов сбрасывает таймер, поэтому fn вызывается только один раз

Ограничения

  • Не использовать сторонние библиотеки
0% принято
0 решений