@Dubrovin

Почему не работает замыкание в функции JS?

Есть вот такая функция:
debounce = ( fn, time ) => {
		let timerId;

		return ( ...args ) => {
			if ( timerId ) {
				clearTimeout( timerId );
			}

			timerId = setTimeout( () => {
				fn( ...args );
				timerId = null;
			}, time );
		};
	},

Если вызвать её несколько раз вот так:
debounce( () => {
//какой-либо код
} )();

То debounce не сработает. Понимаю, что при каждом запуске обнуляется timerId, но не могу понять, что я делаю не так?
  • Вопрос задан
  • 92 просмотра
Решения вопроса 1
miraage
@miraage
Старый прогер
const debounce = ( fn, time ) => {
    let timerId;

    return ( ...args ) => {
      if ( timerId ) {
        clearTimeout( timerId );
      }

      timerId = setTimeout( () => {
        fn( ...args );
        timerId = null;
      }, time );
    };
  }

const fn = (arg) => {
  console.log(arg)
}

const debouncedFn = debounce(fn, 250)

let i = 0

debouncedFn(++i)
debouncedFn(++i)
debouncedFn(++i)
debouncedFn(++i)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы