| Сайт Игоря Кононученко → | Статьи ↓ |
SmartInterval — класс для эффективной обработки повторяющихся событий14 апреля 2010 |
Проблема — частый вызов ресурсоемких кусков кодаРассмотрим пару примеров. В поисковом поле пользователь набирает текст. При кадом нажатии инициируется отправка аякс-запросов к серверу. Сервер выполняет поиск в базе данных и возвращает ответ. Пользователь, что-то набирает в текстовом поле, а интерфейс не содержит кнопки сохранения. Преполагается, что все что набирает пользователь и так сохраняется. Опять же, на каждое нажатие кнопки отправляется затратный запрос. Пробуем: Еще пример. На странице обрабатывается событие onmosemove. При каждом вызове обработчика страница производит какие-либо ресурсозатратные пересчеты. Смотрим: Поводите мышью РешениеДля того, чтобы обработчик вызывался не так часто, нужно сделать проверку. Она должна отбрасывать все однообразные вызовы и обязательно выполнять последний, чтобы не потерять данные ввода, полученные в конце взаимодействия. У меня получился такой код:
Использовать так:
Теперь проверим. Клавиатура: Мышь: Поводите мышью В концеЗамечу, что я использовал classy.js и свою bind-функцию. Скачать smartInterval.js. Вопросы и замечания буду рад увидеть на почте:). |