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