Отложенный вызов (debounce)

Medium
FunctionTimingYandexTinkoff

Реализуйте функцию debounce(fn, ms), которая возвращает «debounced»-версию fn.

Debounced-функция откладывает вызов fn на ms миллисекунд после последнего вызова. Если за это время происходит ещё один вызов, таймер сбрасывается.

const log = debounce(console.log, 300);
log('a'); // таймер 300ms
log('b'); // сброс, таймер 300ms
// через 300ms: console.log('b')

Примеры

Пример 1
Вход:
debounce(fn, 300)
Выход:
Вызывает fn через 300ms после последнего вызова
Ваш код - JavaScript
Результаты
Нажмите «Запуск» для выполнения кода