Size: a a a

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

2020 August 29

S

SE in ReactiveX - русскоговорящее сообщество
Здравствуйте
Это мой пример из моего проекта:
Observable.zip(mRepository.getAvailableServices()
           .subscribeOn(Schedulers.newThread()),
           mRepository.getInfo()
               .subscribeOn(Schedulers.newThread()),
           mRepository.getOldInfo()
               .subscribeOn(Schedulers.newThread()),
           Function3 { services: AvailableGroupsServices, info: Info, oldInfo: OldInfo ->
               Triple(services, info, oldInfo)
           })
           .observeOn(AndroidSchedulers.mainThread())
           .subscribeOn(Schedulers.io())

Хотел узнать,  смотрел примеры как использовать zip. В многих примерах в каждом Observable указывается вот так .subscribeOn(Schedulers.newThread()), в некоторых примерах вот так .subscribeOn(Schedulers.io()). У меня сетевой запрос какой Scheduler мне лучше указать?
Кроме этого на самом Observable.zip указывают .subscribeOn(Schedulers.io()), я попробовал указать только .observeOn(AndroidSchedulers.mainThread()) у меня норм работает. Честно говоря запутался, как правильнее сделать это?
источник

AP

Alex Petrov in ReactiveX - русскоговорящее сообщество
Всем привет.
Можете в двух словах подсказать как правильно кэшировать данные и какой-то грамотный красивый подход или послать в какую-нибудь статью? Ничего стоящего найти не могу.
То есть вопрос то классический как я полагаю, это подгрузка данных из сети в БД, потом уже отображение из БД, примерно так. Но сети может не быть, может придти ошибка, соответственно тогда подтягиваем данные сразу из БД, последние загруженные... Надеюсь более-менее понятно объяснил)
источник

S

Singular in ReactiveX - русскоговорящее сообщество
Alex Petrov
Всем привет.
Можете в двух словах подсказать как правильно кэшировать данные и какой-то грамотный красивый подход или послать в какую-нибудь статью? Ничего стоящего найти не могу.
То есть вопрос то классический как я полагаю, это подгрузка данных из сети в БД, потом уже отображение из БД, примерно так. Но сети может не быть, может придти ошибка, соответственно тогда подтягиваем данные сразу из БД, последние загруженные... Надеюсь более-менее понятно объяснил)
зачем проверку на null делаешь, у тебя там null не будет. просто делай localdataSource.getNowPlay.... и все
источник

S

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

AP

Alex Petrov in ReactiveX - русскоговорящее сообщество
Singular
if else убери
Да, if else тут очевидно лишние, это ясно. Я просто не догоняю как тут сделать, если выключить сеть, то сваливаюсь в ошибку там где subscribe делаю. А как сделать так, чтобы при наличии инета и нормальном ответе от сервака мы обновляли данные в БД, а при отсутствии подтягивали из БД последние подгруженные данные...
источник

AP

Alex Petrov in ReactiveX - русскоговорящее сообщество
Ну то есть сначала обращаюсь к remoteDataSource, а дальше тупик)
источник

S

Singular in ReactiveX - русскоговорящее сообщество
Тогда бери днные из БД, а потом в сеть и кешируй
источник

S

Singular in ReactiveX - русскоговорящее сообщество
если сети не будет, то при первом вызове ты получишь Error.
источник

P

Papin in ReactiveX - русскоговорящее сообщество
Alex Petrov
Да, if else тут очевидно лишние, это ясно. Я просто не догоняю как тут сделать, если выключить сеть, то сваливаюсь в ошибку там где subscribe делаю. А как сделать так, чтобы при наличии инета и нормальном ответе от сервака мы обновляли данные в БД, а при отсутствии подтягивали из БД последние подгруженные данные...
Switch map вроде решает это
источник

S

Singular in ReactiveX - русскоговорящее сообщество
Papin
Switch map вроде решает это
Врядле поможет
источник

S

Singular in ReactiveX - русскоговорящее сообщество
Если сети нет и мы делаем запрос в сеть, а затем проверяем в switch, то мыже сразу Error получим до вызова switchMap
источник

S

Singular in ReactiveX - русскоговорящее сообщество
разве нет?
источник

AP

Alex Petrov in ReactiveX - русскоговорящее сообщество
Singular
разве нет?
Вот да, в этом и проблема
источник

S

Singular in ReactiveX - русскоговорящее сообщество
Может doOnError?
источник

AP

Alex Petrov in ReactiveX - русскоговорящее сообщество
Не, накостылить то можно много всякого) Хотелось как раз какой-то грамотный подход, может статью какую, как я понимаю задача то типичная совершенно
источник

AP

Alex Petrov in ReactiveX - русскоговорящее сообщество
Singular
Может doOnError?
Не пробовал, кстати, можно
источник

P

Papin in ReactiveX - русскоговорящее сообщество
Короче не помню как называется оператор
Кидаешь 2 источника,если 1 фейл то вызовится 2й
источник

AP

Alex Petrov in ReactiveX - русскоговорящее сообщество
Papin
Короче не помню как называется оператор
Кидаешь 2 источника,если 1 фейл то вызовится 2й
О, похоже на правду
источник

S

Singular in ReactiveX - русскоговорящее сообщество
zip чтоли?
источник

P

Papin in ReactiveX - русскоговорящее сообщество
Alex Petrov
Не, накостылить то можно много всякого) Хотелось как раз какой-то грамотный подход, может статью какую, как я понимаю задача то типичная совершенно
Ду он эрор как раз костыль
Там же вызовов функции,а не подмена источника
источник