У меня есть поисковый ввод через Интернет.При каждом событии onkeyup выполняется асинхронный запрос от клиента с JavaScript к документу PHP, который возвращает ответ на запрос поиска, а затем JS принимает ответ на запрос поиска и записывает его клиенту.Эта часть работает нормально.
Однако моя проблема заключается в том, что пользователь вводит свой поисковый запрос быстрее, чем система может ответить.
Допустим, пользователь, который быстро печатает, выполняет поискслово super
.Пользователь вводит s
(и поиск выполняется для s
), в то время как поиск выполняется и записывается для s
, пользователь вводит u
, и теперь поиск для su
ставится в очередь.Затем этот очень быстрый пользователь печатает p
, в то время как начальный поиск s
завершается, и теперь поиски su
и sup
ставятся в очередь.
Если пользователь печатает медленно, проблема не возникает, и мой инструмент поиска может отвечать на каждый запрос без необходимости ставить в очередь поисковые запросы.Однако, если пользователь печатает очень быстро, он увидит, что несколько обновлений результатов поиска будут мигать перед ним после того, как они закончат вводить свой поисковый термин, потому что скрипт завершает элементы в очереди.
Как я могу улучшить свой код, чтобыулучшить пользовательский опыт?
Например, как бы вы написали этот сценарий так, чтобы любые элементы в очереди, кроме последнего, были удалены?