Size: a a a

ReactiveX - русскоговорящее сообщество

2017 March 02

A

Andre in ReactiveX - русскоговорящее сообщество
хм вот этого я не знал, попробуем сейчас
источник

A

Artur in ReactiveX - русскоговорящее сообщество
кто как работает с инстансом рилма? если открывать его в shedulers.io, почти каждый раз будет порисходить довольно дорогая операция по енго созданию. Сейчас работаю с  mainThread - ui подвисает.
источник

AD

Andrew Dementiev in ReactiveX - русскоговорящее сообщество
Artur
кто как работает с инстансом рилма? если открывать его в shedulers.io, почти каждый раз будет порисходить довольно дорогая операция по енго созданию. Сейчас работаю с  mainThread - ui подвисает.
делай в ИО, или нью тред, если ио активно юзаешь
источник

А

Андрей in ReactiveX - русскоговорящее сообщество
computation?
источник

AD

Andrew Dementiev in ReactiveX - русскоговорящее сообщество
Artur
кто как работает с инстансом рилма? если открывать его в shedulers.io, почти каждый раз будет порисходить довольно дорогая операция по енго созданию. Сейчас работаю с  mainThread - ui подвисает.
вообще если с RealmResults работать и не делать им сортировку и выборку в лист, то он и в уи норм, он лэйзи итератор отдает обычно, а данные только при итерации, или конверте
источник

AD

Andrew Dementiev in ReactiveX - русскоговорящее сообщество
реал резалтс если что с интерфейсом List<E> дружит
источник

AD

Andrew Dementiev in ReactiveX - русскоговорящее сообщество
можно List<MyType> data = realm......;
источник

A

Artur in ReactiveX - русскоговорящее сообщество
Там маппинги дальше идут, я не работаю с managed-объектами. Поэтому и фризы, что в основном copyFromRealm
источник
2017 March 03

AD

Andrew Dementiev in ReactiveX - русскоговорящее сообщество
Artur
Там маппинги дальше идут, я не работаю с managed-объектами. Поэтому и фризы, что в основном copyFromRealm
Тогда выноси в другой трэд
источник

GR

Grigory Rylov in ReactiveX - русскоговорящее сообщество
Всем привет! Ребята, подскажите пожалуйста, безрезультатно бьюсь как правильно сделать...
У меня есть такой кейс: если есть данные в кэше, то я беру дату полседнего элемента и запрашиваю у сервера - дай данные с этой даты. Запрашиваю с пагинацией, так как может в кэше оч старые данные ( но удалять их не нужно)
Делаю запрос с пагинацией примерно так Observable.range(0, Integer.MAX_VALUE)
               .concatMap(pageIndex -> ....)
               .takeWhile(response -> !response.getData().isEmpty())
               ...
               .last()
беда в том, что если вернутся пустые данные, то takeWhile не пропустит дальше и обзервбл вернет пустоту...
А мне бы как то в этом кейсе вернуть мой chacheObservable в котором есть данные из кэша
Подскажите, пожалуста, как осуществить задуманное? Спасибо!
источник

GR

Grigory Rylov in ReactiveX - русскоговорящее сообщество
Сперва подумал про мердж, но мне нужно или с одного, в случае если ничего не пришло - от другого обзервбла. Либо как то после takeWhile обработать ситуацию о том что ничего не пришло
источник

DC

Denis Chuvasov in ReactiveX - русскоговорящее сообщество
Denis Chuvasov
мне нужно обработать throwable и бросить другой
Нашел оператор по обработке ошибок. onErrorResumeNext делает то что мне нужно.
источник

DC

Denis Chuvasov in ReactiveX - русскоговорящее сообщество
Grigory Rylov
Сперва подумал про мердж, но мне нужно или с одного, в случае если ничего не пришло - от другого обзервбла. Либо как то после takeWhile обработать ситуацию о том что ничего не пришло
Если я правильно понял задачу, то попробуй это
// Query the local storage if available. If not, query the network.
           Observable<List<Task» localTasks = getAndCacheLocalTasks();
           return Observable.concat(localTasks, remoteTasks)
                   .filter(tasks -> !tasks.isEmpty())
                   .first();
источник

DC

Denis Chuvasov in ReactiveX - русскоговорящее сообщество
источник

GR

Grigory Rylov in ReactiveX - русскоговорящее сообщество
Denis Chuvasov
Если я правильно понял задачу, то попробуй это
// Query the local storage if available. If not, query the network.
           Observable<List<Task» localTasks = getAndCacheLocalTasks();
           return Observable.concat(localTasks, remoteTasks)
                   .filter(tasks -> !tasks.isEmpty())
                   .first();
Спасибо! Попробую.
источник

AS

Andriy Savchenko in ReactiveX - русскоговорящее сообщество
Если тот обсервейбл, который может ничего не вернуть, в любом случае эммитит onCompleted, то можно попробовать использовать switchIfEmpty(). Без onComplete этот переключатель не срабатывает
источник

GR

Grigory Rylov in ReactiveX - русскоговорящее сообщество
Andriy Savchenko
Если тот обсервейбл, который может ничего не вернуть, в любом случае эммитит onCompleted, то можно попробовать использовать switchIfEmpty(). Без onComplete этот переключатель не срабатывает
Попробую, а пока новая догадка - у меня возникает исключение NoSuchElementException, из-за которого не срабатывает как следует concat,  есть подозрение что из-за комбинации
.takeWhile(response -> !response.getData().isEmpty())
               ...
               .last()
но по стектрейсу ничего не понятно(
Возможно ситуация что нет элементов до last() и он кидает эксепшн, не подскажете как обойти?
источник

AG

Artem Gilmudinov in ReactiveX - русскоговорящее сообщество
а у тебя не Single там?
источник

A

Artur in ReactiveX - русскоговорящее сообщество
источник

A

Artur in ReactiveX - русскоговорящее сообщество
Репозиторий возвращает сингл с листом. Я хочу из этого сингла вытащить элементы и проэмитить в observable. Как это можно сделать? RxJava2
источник