В поиске остаются результаты по недопечатанному запросу
Экран поиска отправляет запрос на каждое изменение текста в поле. Пользователь быстро набирает «iphone». В логах видно последовательность запросов: «i», «ip», «iph», «ipho», «iphon», «iphone».
Время от времени на экране остаётся выдача по «iph», хотя в поле уже «iphone».
Что происходит и как это чинить?
- Нужно кешировать результаты по каждому префиксу запроса — тогда порядок ответов перестанет иметь значение, ведь выдача возьмётся из кеша по текущему тексту поля
- Сервер отвечает медленно: нужно увеличить таймаут и повторять запросы, которые не успели, тогда выдача по последнему запросу дойдёт до экрана
- Гонку иначе не победить: надо убрать поиск по вводу и искать только по нажатию кнопки «Найти»
- Ответы приходят не в том порядке, в каком уходили запросы, и поздний ответ на устаревший запрос перезаписывает актуальный — предыдущий запрос надо отменять
