Существует много способов решения этой проблемы, вот один из тех, о которых я могу подумать:
Отслеживайте запросы, которые поступают на сервер в списке, и всякий раз, когда вы изменяете ввод пользователя, отмените все предыдущие запросы, которые еще выполняются, а затем отправьте следующий запрос с последним пользовательским вводом. Если запрос выполнен успешно, извлеките данные из ответа.
Однако вы можете столкнуться с условиями гонки здесь, поэтому вы получите ответ от сервера, прежде чем сможете отменить запрос.
Чтобы решить условие состязания, вы можете прикрепить идентификатор (например, отметку времени, счетчик, хэш ввода пользователя) к каждому запросу, который будет отправлен сервером обратно с ответом. Вы отслеживаете последний идентификатор запроса и всякий раз, когда получаете успешный ответ от сервера, сравниваете его идентификатор с последним сохраненным вами идентификатором и отбрасываете ответ, если сравнение не удается.