Для того чтобы каждое событие обрабатывалось только один раз в течение одной секунды, можно использовать технику дебаунсинга.
Одним из способов реализации дебаунсинга при прокрутке колесика мыши можно использовать функцию setTimeout().
Пример кода:
```javascript
let isScrolling = false;
window.addEventListener('scroll', function() {
// Устанавливаем флаг isScrolling в true
isScrolling = true;
// Если таймер уже был запущен, делаем сброс
if (timeout) {
clearTimeout(timeout);
}
// Запускаем таймер для срабатывания callback функции через 1 секунду
timeout = setTimeout(function() {
// Обрабатываем событие прокрутки колесика мыши
// Сбрасываем флаг isScrolling
isScrolling = false;
}, 1000);
});
// Срабатывает каждые 100 миллисекунд, чтобы проверить флаг и выполнить console.log
setInterval(function() {
if (isScrolling) {
console.log('Прокрутка колесика мыши');
}
}, 100);
```
В этом коде вся обработка события прокрутки колесика мыши происходит внутри таймера setTimeout(). Переменная isScrolling используется для хранения состояния - было ли событие прокрутки колесика мыши за последнюю секунду.
С помощью функции setInterval() проверяем значение флага isScrolling каждые 100 миллисекунд и выполняем console.log в случае, если флаг установлен в true.