214 похожих чатов

Привет всем Нужен совет. У меня архитектура MVVM. У меня есть

страница, где я должен показать данные с cети. Кроме этого я кэширую данные результата сервера. Валидность кэша 1 час. Всё работа касательно запросов в сеть и кэширование результатов ответа сервера происходит в Repository. Мне нужно сделать так, чтобы если запрос в сеть вернёт ошибку сервера, то в течение 1 часа показывать данные из кэша.
Пока у меня есть два решение проблемы, они похожие между собой, разница только в том, что в одном месте проверку я делаю в Repository, а другом месте во ViewModel.
Первый вариант, если произойдёт ошибка сервера, то в Repository в onErrorResumeNext узнать тип ошибки, если тип ошибки будет серверная ошибка, то зафиксировать время когда произошла ошибка и исходя из этого последующий час при запросе данных отправлять данные из кэша.
Второй вариант, если произойдёт ошибка сервера, то во ViewModel при обработки ответа с Repository в onError узнать тип ошибки, если тип ошибки будет серверная ошибка, то зафиксировать время когда произошла ошибка и исходя из этого последующий час при запросе данных отправлять данные из кэша.
Какой вариант лучше, делать проверки в Repository или во ViewModel? Или есть ли какие-то лучше решение данной задачи?

Это как я получаю данные с Repository
https://gist.github.com/githubgist123/7e027675bb4db07fef606e23f39f8a96

1 ответов

8 просмотров

1. Исключение ловить в репозитории 2. Сделать обертку, которая будет возвращать и и сключение и данные из кеша. Почему только при исключении данные из кеша - непонятно. Я всегда пропускаю данные через кеш и возвращаю кеш.

Похожие вопросы

Обсуждают сегодня

Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
И никого не интересует какие пакеты кто использует. ((% Заходишь на сайт симфони и видишь поддержку Украины - по законам РФ это ж экстремизм. Только никто не отказывается от с...
Am Ambrion
11
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
Чтобы перехватить все нажимания буков на форме, надо хук ставить? Пробовал на форме ОнКейДаун, оно ловит клаву если фокус не на компоненте с вводом текста
Serjone
15
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
7
Народ! Впервые клиенту пришло письмо от РКН, у вас, дескать, есть яндекс метрика, а нигде не написано, что вы ее юзаете. Никто не сталкивался?
Sasha Beep
14
Всем привет! вывожу на общей стр дочерние ресурсыв каждом ресурсе галерея, и первая фотка должна выводиться на общей [!DocLister? &prepare=photo !]
Alekso
12
Я правильно понимаю что нет способов получить список ожидающих заявок на вступление в группу с помощью бота из mtproto?
Шамиль Прилов
7
А можно вопрос? Мне сегодня сказали что у меня функция (которая просто заполняет массив значениями) не правильная void Full(double * arr, int n) { for (int i = 0; i < n; i...
† C E †
7
Добрый вечер. Хочу чтобы у меня в классе поле было функцией, которая возвращает строку. Делаю так: interface ... TGetOutPath = function : String of object; ... protec...
Kirill Filippenok
12
Карта сайта