Связывайте ответ не только с ID сущности, но и с поколением запроса. При переходе A → B → A старый ответ A не должен заменить результат нового запроса A.
Как спроектировать взаимодействие с бэкендом и обработать race condition, когда запрос к первой сущности завершается позже запроса ко второй, а пользователь уже вернулся к первой?
Связывайте ответ не только с ID сущности, но и с поколением запроса. При переходе A → B → A старый ответ A не должен заменить результат нового запроса A.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Связывайте ответ не только с ID сущности, но и с поколением запроса. При переходе A → B → A старый ответ A не должен заменить результат нового запроса A.
Храните данные по ключу сущности и номер последнего запроса для каждого ключа. Применяйте результат только при совпадении актуального номера; AbortController уменьшает лишнюю работу, но не заменяет проверку актуальности. Loading и ошибки тоже должны обновляться только соответствующим запросом.