load запускает получение данных, а getLastCities читает уже доступное состояние. Поведение до завершения загрузки должно быть явной частью контракта.
Почему вы создали отдельные методы load и getLastCities, и что должно произойти, если вызов getLastCities произойдет до загрузки данных?
load запускает получение данных, а getLastCities читает уже доступное состояние. Поведение до завершения загрузки должно быть явной частью контракта.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
load запускает получение данных, а getLastCities читает уже доступное состояние. Поведение до завершения загрузки должно быть явной частью контракта.
Возможный вариант: load — async throws, а синхронный getter возвращает состояние notLoaded/loading/loaded/failed, не маскируя отсутствие загрузки пустым массивом. Другой вариант — единый async-метод, который сам ждёт общую загрузку и затем возвращает города.
Учитывайте повторные вызовы, отмену, ошибки и обновление кеша. Разделение оправдано, если оно упрощает управление жизненным циклом; оно вредно, если клиент обязан угадывать порядок вызовов и случайно получает некорректные данные. Конкретный выбор зависит от требований интерфейса.