Живой поиск и долгий ответ, как решить?

Доброго времени суток!
Проблема такая. На сайте есть живой поиск который у ищет ФИО в файла и в виду того что файлов более 10000 и в каждый надо залезть и прочитать поиск происходит около секунд 5. Так вот при каждой новой введенной букве отправляется новый запрос и табличка с данными отправляется по приходу ответа. Подскажите как можно сделать какой то перерыв наверное, допустим если вводят фамилию запрос отправился после 4 буквы первый раз и следующий был уже не на введенную букву а скажем секунды через 2 и т.д.

Не могу сообразить как это сделать.
Кому не сильно сложно прошу помочь Заранее спасибо!
  • Вопрос задан
  • 292 просмотра
Решения вопроса 1
@Che603000
c 2011 javascript
Псевдо код на js с задержкой отправки запроса на сервис 2 сек после ввода последнего знака.

const key =null;

const onChange =e => { // обработчик изменения поля ввода
     const value = e.target.value;
     clearTimeout(key); // отменить  выполнения предыдущего запроса
     if(value.length < 4) // если длинна менее 4 не отправлять запрос
        return;
     
     // отправка запроса  с задержкой 
     key=setTimeout(()=>fetch(url+ value).then(res=>{
        // здесь обработка ответа сервера 
     }), 2000) // 2 сек задержка
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
wolf1848
@wolf1848
Искатель
Отправляйте запрос по факту количества введенных символов. Следующий отправляйте по факту получения ответа. К примеру используя промисы или колбэки. Либо отложите отправку с помощью setTimeout.
Ответ написан
Комментировать
inoise
@inoise Куратор тега PHP
Solution Architect, AWS Certified, Serverless
1. Уменьшаем число запросов. Можно сделать отправку запроса через 0.2 секунды после последней нажатой клавиши
2. Переводим файлики в базу данных
Ответ написан
@nvdfxx
Senior Pomidor developer
debounce
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
28 нояб. 2024, в 18:46
3000 руб./за проект
28 нояб. 2024, в 17:46
10000 руб./за проект
28 нояб. 2024, в 17:38
12000 руб./за проект