Size: a a a

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

2020 December 14

l

lenar in ReactiveX - русскоговорящее сообщество
хотя по примеру можно через onErrorReturn, но я бы не оборачивал. мало ли оно мимо пролетит
источник

A

Aleksandr in ReactiveX - русскоговорящее сообщество
lenar
хотя по примеру можно через onErrorReturn, но я бы не оборачивал. мало ли оно мимо пролетит
Просто в случае onErrorReturn всё равно вернется ошибка, но то что обработка на стороне сабскрайбера - кажется это не так и плохо 😅
источник

S

Sergey in ReactiveX - русскоговорящее сообщество
lenar
single.onErrorResumeNext(thr -> thr instanceof IoException ? Single.error : Single.just)
Вааах!!! Все отрабатывает нормально, спасибо большое))
источник

S

Sergey in ReactiveX - русскоговорящее сообщество
А еще вопрос из той же серии, если мне пришел определенный элемент в Single, как мне вернуть по нему ошибку?
Я сейчас делаю так:

в map или doOnSuccess проверяю, какой элемент,  если тот, что нужен, то делаю

thow new RightException(...)
источник

S

Sergey in ReactiveX - русскоговорящее сообщество
Может здесь тоже есть более подходящий подход с заворачиванием в Single?
источник

S

Sergey in ReactiveX - русскоговорящее сообщество
Aleksandr
Просто в случае onErrorReturn всё равно вернется ошибка, но то что обработка на стороне сабскрайбера - кажется это не так и плохо 😅
Только тут остается момент, как правильно прокидывать сам throwable(( Делал как throw new Exception(throwable)
источник

l

lenar in ReactiveX - русскоговорящее сообщество
Sergey
А еще вопрос из той же серии, если мне пришел определенный элемент в Single, как мне вернуть по нему ошибку?
Я сейчас делаю так:

в map или doOnSuccess проверяю, какой элемент,  если тот, что нужен, то делаю

thow new RightException(...)
flatmap(v -> if predicate.test(v) ? just/error : just/error)
источник

l

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

S

Sergey in ReactiveX - русскоговорящее сообщество
lenar
flatmap(v -> if predicate.test(v) ? just/error : just/error)
Супер!!! @lenar - ты Мега!!  🔥🔥🔥
источник

S

Sergey in ReactiveX - русскоговорящее сообщество
lenar
ошибки надо оборачивать в поток. иначе может случиться что ошибка пойдет не в потоке например
Т.е. всегда следует оборачивать в Single, Maybе, Observable и т.д.? Где-то может случится кейс, что делаем throw ... и приложение падает
источник

l

lenar in ReactiveX - русскоговорящее сообщество
Sergey
Т.е. всегда следует оборачивать в Single, Maybе, Observable и т.д.? Где-то может случится кейс, что делаем throw ... и приложение падает
ну по крайней мере люди пишут что на некоторых операторах так бывало. баг ли это в каких-то операторах или логика какая я до конца не разбирался
источник

S

Sergey in ReactiveX - русскоговорящее сообщество
lenar
ну по крайней мере люди пишут что на некоторых операторах так бывало. баг ли это в каких-то операторах или логика какая я до конца не разбирался
Принял во внимание ☝️
источник
2020 December 28

I

Ivan in ReactiveX - русскоговорящее сообщество
Привет.

Такой вопрос. Вот заэмитил flowable, в цепочке есть много операторов. Может быть такое, что для одного эмита еще не выполнилась вся цепь, но она уже начала выполняться для другого?

flowable
 .map {
   если для предыдущего эмита не
   выполнилось тело этого оператора?
   *тут что-то тяжелое*
 }
 ..
 .flatMap {
   Могу ли я оказаться здесь
   при следующем эмите,
 }
источник

M

Maksim Gridin in ReactiveX - русскоговорящее сообщество
Ivan
Привет.

Такой вопрос. Вот заэмитил flowable, в цепочке есть много операторов. Может быть такое, что для одного эмита еще не выполнилась вся цепь, но она уже начала выполняться для другого?

flowable
 .map {
   если для предыдущего эмита не
   выполнилось тело этого оператора?
   *тут что-то тяжелое*
 }
 ..
 .flatMap {
   Могу ли я оказаться здесь
   при следующем эмите,
 }
да, flatMap асинхронный оператор
источник

I

Ivan in ReactiveX - русскоговорящее сообщество
Maksim Gridin
да, flatMap асинхронный оператор
Спасибо, а если подписываться в Schedulers.single()? Без разницы?
источник

M

Maksim Gridin in ReactiveX - русскоговорящее сообщество
Ivan
Спасибо, а если подписываться в Schedulers.single()? Без разницы?
насчет schedulers не подскажу, я на rxjs пишу
источник

M

Maksim Gridin in ReactiveX - русскоговорящее сообщество
Ivan
Спасибо, а если подписываться в Schedulers.single()? Без разницы?
если хотите сохранить порядок используйте concatMap
источник

I

Ivan in ReactiveX - русскоговорящее сообщество
Maksim Gridin
если хотите сохранить порядок используйте concatMap
Тогда сoncatMap никогда не выполнится раньше map, который выше в цепи?
источник

M

Maksim Gridin in ReactiveX - русскоговорящее сообщество
concatMap получает входящий обсервебл, подписывается на него и эмитит все его значения, затем подписывается на следующий входящий обсервебл
источник
2020 December 29

I

Ivan in ReactiveX - русскоговорящее сообщество
Maksim Gridin
concatMap получает входящий обсервебл, подписывается на него и эмитит все его значения, затем подписывается на следующий входящий обсервебл
спасибо, я вот думаю, что Schedulers.single() должен решать эту проблему, так как он даёт гарантию, что все операторы выполнятся в одном потоке
источник