Как спроектировать взаимодействие с бэкендом и обработать race condition, когда запрос к первой сущности завершается позже запроса ко второй, а пользователь уже вернулся к первой?

Связывайте ответ не только с ID сущности, но и с поколением запроса. При переходе A → B → A старый ответ A не должен заменить результат нового запроса A.

Короткий ответ

Что ответить на собеседовании

Связывайте ответ не только с ID сущности, но и с поколением запроса. При переходе A → B → A старый ответ A не должен заменить результат нового запроса A.

Подробный разбор

Ответ с пояснениями

Связывайте ответ не только с ID сущности, но и с поколением запроса. При переходе A → B → A старый ответ A не должен заменить результат нового запроса A.

Храните данные по ключу сущности и номер последнего запроса для каждого ключа. Применяйте результат только при совпадении актуального номера; AbortController уменьшает лишнюю работу, но не заменяет проверку актуальности. Loading и ошибки тоже должны обновляться только соответствующим запросом.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее