Я думаю, вы должны рассмотреть вопрос об отмене фонового работника.
Если вы отменяете запросы и пользователь печатает быстрее, чем ваш сервер возвращает запросы, он не увидит подсказки, пока не закончит ввод.
В подобных интерактивных сценариях может быть лучше показать ответы, которые запаздывают с тем, что печатает пользователь. Ваш пользователь будет знать, что он может прекратить печатать, если слово, которое он имеет в виду, является вашим списком предложений.
Это также будет лучше для вашего сервера, когда он занят, потому что вместо множества отмененных запросов, которые будут стоить что-то, но которые в конечном итоге не будут отображаться, будет меньше запросов, ответ которых вы фактически используете.
Я столкнулся с похожими проблемами с (3d) приложениями рендеринга, где ошибка новичка заключается в отмене и повторном рендеринге при каждом перемещении мыши. Это привело к большому количеству вычислений и небольшому количеству интерактивных отзывов.