Почему вы создали отдельные методы load и getLastCities, и что должно произойти, если вызов getLastCities произойдет до загрузки данных?

load запускает получение данных, а getLastCities читает уже доступное состояние. Поведение до завершения загрузки должно быть явной частью контракта.

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

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

load запускает получение данных, а getLastCities читает уже доступное состояние. Поведение до завершения загрузки должно быть явной частью контракта.

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

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

load запускает получение данных, а getLastCities читает уже доступное состояние. Поведение до завершения загрузки должно быть явной частью контракта.

Возможный вариант: load — async throws, а синхронный getter возвращает состояние notLoaded/loading/loaded/failed, не маскируя отсутствие загрузки пустым массивом. Другой вариант — единый async-метод, который сам ждёт общую загрузку и затем возвращает города.

Учитывайте повторные вызовы, отмену, ошибки и обновление кеша. Разделение оправдано, если оно упрощает управление жизненным циклом; оно вредно, если клиент обязан угадывать порядок вызовов и случайно получает некорректные данные. Конкретный выбор зависит от требований интерфейса.

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

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

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

Подробнее