Я хочу сжать несколько событий в одно событие с временной задержкой. Мне не нужно, чтобы моя связанная функция неоднократно вызывалась для действительно распространенных вещей, таких как движение мыши и прокрутка страницы. Самое большее, каждые полсекунды было бы достаточно, если есть событие в очереди.
Ради более конкретного примера:
Допустим, я связываюсь с jQuery (...). Scroll () с помощью довольно дорогой функции. Когда пользователь прокручивает страницу, он будет вызываться сотни, возможно, тысячи раз. Я хочу сконцентрировать все эти события в один вызов события за .5 секунд, посылая самое последнее событие обработчику через 0,5 секунды и игнорируя предыдущие события, которые могли бы сработать.
Визуально:
- 15: 20: 35.000 - Событие прокрутки пользователя. Таймер запускается. Новое событие сохранено.
- 15: 20: 35.020 - Событие прокрутки пользователя. Заменить сохраненное событие.
- 15: 20: 35.100 - Событие прокрутки пользователя. Заменить сохраненное событие.
- 15: 20: 35.371 - Событие прокрутки пользователя. Заменить сохраненное событие.
- 15: 20: 35.500 - Срок действия таймера истекает. Событие с 15: 20: 35.371 отправляется зарегистрированному обработчику / обратному вызову. Ни одно из более ранних событий не отправлено.
Кстати, пару месяцев назад я где-то нашел плагин jQuery, который специально делал именно это и имел некоторые приятные функции, но теперь я не могу найти его снова или любой подобный плагин. Я бы предпочел найти работающий плагин, чем заново изобретать колесо и взломать решение (но я возьму взлом).