Такой пуньк с UDF архитектурой (а именно redux).
Работаю с поиском данных и вскрылась такая вот проблемка.
Есть экран поиска с тремя стейтами.
• IDLE — запрос поиска пуст.
На экране просто текст, мол «Введите запрос».
• LOADING — что-то там грузится.
На экране вертится прогрессбар.
• LOADED — данные загрузились и отображаются на экране.
Тут либо показывается список данных, либо сообщение о том, что данные найти не удалось.
Запрос идёт на каждый введённый символ. Debounce пока не предусмотрен.
Кейс:
- Пользователь зашёл на экран. Стейт IDLE.
- Пользователь ввёл какой-то запрос, пошла загрузка. LOADING.
- Данные могли загрузиться, но это тут неважно.
- Пользователь ПОЛНОСТЬЮ удаляет запрос. Снова стейт IDLE.
Однако!
Т.к. сам запрос идёт с какой-то задержкой (запрос к бэку), то последний удаляемый символ идёт как последний запрос.
Соответственно — уже после того, как прилетел IDLE, обрабатывается эффект с последним символом и нам прилетает стейт LOADED с данными.
Собстна, вопрос — как с этим бороться?
Вроде как, всё можно свести к какой-то общей отмене или перекрытию эффектов, но я с таким не сталкивался, интересно как это принято решать.