Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Autocomplete (https://javascript.ru/forum/dom-window/71171-autocomplete.html)

DynkanMaclaud 31.10.2017 01:30

Autocomplete
 
Доброго времени суток, хотелось бы уточнить реализацию autocomplete поля,

Хотелось бы получить консультацию для тех кто реализовывал такое на боевом сервере под нагрузкой...

В кратце реализация ведь такая, на input весит обработчик нажатия клавиш и при нажатии отправляется запрос на сервер с веденным текстом, там происходит выборка из БД подходящих значений и эти данные отправляются обратно на клиент... Вот только вопрос, а гарантированно ли запросы отправленные от клиента и ответы на них вернуться обратно в том же порядке?? я думаю что нет, поэтому необходимо на серв отправлять еще и дату? эту дату на клиенте сохранять в массив а когда сервер вернет ответ (с датой которую отправил клиент), то на клиенте проверять последний ли это запрос пришел или нет...
Правильно ли я рассуждаю господа ?

laimas 31.10.2017 05:45

Цитата:

Сообщение от DynkanMaclaud
Правильно ли я рассуждаю господа ?

Нет, есть очередь. А запросы сервера производят с задержкой, иначе его можно забить запросами.

Alexandroppolus 31.10.2017 11:26

DynkanMaclaud,

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

Nexus 31.10.2017 11:32

А есть ли смысл заморачиваться с проверкой актуальности полученных от сервера данных?
Если от сервера пришел ответ, но эти данные уже неактуальны, то они совсем скоро будут перезаписаны актуальными.

Upd. если скорость ответа сервера может от запроса к запросу сильно разниться, то имеет смысл abort'ить незавершенные запросы.

laimas 31.10.2017 11:54

Цитата:

Сообщение от Alexandroppolus
хотя, браузер умеет кэшировать GET-запросы

Вот именно.


Часовой пояс GMT +3, время: 00:35.