я в настоящее время выборки данных в модели представления, призывая к веб-сервиса:Реактивные Extensions/UI данные запроса кэша веб-
_loadDataCommand = ReactiveCommand.CreateFromObservable(
() => Observable
.StartAsync(ct => _getAllFunction(ct))
.TakeUntil(_loadDataCancel));
_loadDataCancel
это просто IObservable<bool>
, который действует как сигнал отмены.
В настоящее время у меня есть это так, что когда vm перемещается, выполняется команда загрузки данных.
Это очень проблематично для особо дорогостоящих операций по извлечению или когда пользователь просто хочет уйти и вернуться в состояние, в котором они покинули представление (например, выбранный элемент в списке и т. Д.).
То, что я действительно хочу, чтобы быть в состоянии сделать, это иметь его так, что команда всегда выполняет свежие выборки, но я хочу, чтобы иметь дополнительный наблюдаемым я могу использовать на нав-к, которая:
- Получение данных из кэша, если присутствует
- Используйте LoadData наблюдаемым, если данные нет (и вставить в кэш)
некоторых исследований оказались беглой информация вокруг вещей, как Memoize()
и MemoizeAll()
, однако они не доступны в rx (но находятся в System.Interactive).
Некоторые поиски здесь, ответили на этот вопрос: https://stackoverflow.com/a/12666462/639771, но, посмотрев на главный источник для ReactiveUI, теперь я больше не могу найти ObservableAsyncMRUCache
.
Есть ли что-то, что мне не хватает? Я почти уверен, что это будет достаточно тривиально, но я полностью в недоумении.
PS: Я знаю, что Akavache существует, но он может быть немного слишком тяжелым для моих нужд.