Как красиво реализовать живой поиск?

Делаю живой поиск. С помощью js обращаюсь к backend, оттуда к стороннему api серверу. Проблема в том, что этот сервер работает медленно и, если быстро набрать какой-нибудь запрос (например "Москва"), то на сервер уходит много мелких запросов ("М", "Мо", "Мос" и тд). А обратно, всвязи с непредсказуемостью api сервера и асинхронность запросов ответы могут прийти уже не по порядку, вследствие чего результаты поиска скачут.
Вот думаю - как лучше реализовать поиск так, чтобы если было послано несколько запросов, хотя требуется один ответ, то выдавался бы результаты последнего запроса.
В мыслях сделать задержку перед отправкой любого запроса (например пол секунды), либо сохранение в сессии предыдущего запроса. Какие еще идеи приходят на ум?
  • Вопрос задан
  • 2758 просмотров
Решения вопроса 1
fr_end
@fr_end
Frontend разработчик
Используйте функцию debounce
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Symphony
@Symphony Куратор тега JavaScript
Если городов не более 200, то можно на фронтенд вываливать жейсан с названиями и ссылками, работа такого поиска будет моментальной.
Ответ написан
AngReload
@AngReload
Кратко о себе
Зачастую при вводе текста идет анализ, если идет ввод с ~постоянной скоростью печати ничего не делается. Если задержка до слндующего введенного символа превышает предыдущие в N раз - выполняется обработка запроса.
Как красиво реализовать живой поиск?

Можно еще немного обмануть пользователей анимацией всплывания уточненных ответов вверх по списку.
Ответ написан
Ваш ответ на вопрос

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

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