@Danbka

Как уменьшить количество запросов к сервису при вводе строки запроса с клавиатуры?

Использую сервис kladr-api.ru/integration для ввода адреса.

К сервису отправляется запрос при вводе каждого символа в строку поиска. Конечно, в целом это нормально. Но хотелось бы все таки уменьшить кол-во запросов. Зачем? - Ну например затем, что в бесплатной версии кол-во запросов к сервису ограничено.

Возможные варианты

1) отправлять запрос не при вводе каждого символа, а каждого второго.
2) организовать некий timeout между запросами.

Как лучше/правильнее? Может быть, есть другие способы?
  • Вопрос задан
  • 772 просмотра
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Обычно делают по паузе между нажатиями. То есть keyUp сбрасывает таймер, если он есть, и запускает новый. По сработке таймера уже делается запрос. Также можно предусмотреть события cut, paste и т.п.
Ответ написан
Комментировать
SuperPosan
@SuperPosan
Бандит
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Gorky
@Gorky
Веб-разработчик
Обычно делают задержку, которая отсчитывается от последнего нажатия на клавиатуре. Т.е. если пользователь продолжает вводить текст - таймаут не срабатывает и запрос не отправляется. Если после последнего нажатия прошло, к примеру, полсекунды и больше нажатий не было - запрос отправляет. Время таймаута по вкусу, чем он больше - тем меньше нагрузка, но соответственно интерфейс получается менее отзывчивым. Дергая чужой API, проверьте, не навернетесь ли с лимитами запросов, тут если что поможет больший таймаут и возможно кеширование на своей стороне.
В Jquery для автодополнения есть даже встроенная функция:

$( "#search-q" ).autocomplete({
	source: '/actions/autocomplete/',
	minLength: 2,
	delay: 500,
        select: function( event, ui ) { 

        }						
});
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы