Size: a a a

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

2017 March 04

IT

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

DV

Dmitriy Volkovskiy in ReactiveX - русскоговорящее сообщество
попробовал onerrorresumenext - вроде оно ) буду дальше смотреть. спасибо )
источник
2017 March 06

N

Nick Senchurin in ReactiveX - русскоговорящее сообщество
а я вот все бьюсь над прерыванием цепочки вызовов .
вот у меня есть допустим след. цепочка : ob1().obs2().obs3()., вот я получил еррор на 2м шаге,  показываю пользователю алерт , пользователь жмет "ок",  как мне вернуться к исполнению цепочки с того шага, на котором я зафейлился obs2().obs3() которая , вообще в rx можно такое делать?
источник

AG

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

AG

Artem Gilmudinov in ReactiveX - русскоговорящее сообщество
для obs2
источник

N

Nick Senchurin in ReactiveX - русскоговорящее сообщество
ммм, а если я могу завалиться на каждом шаге это мне каждый оператор надо обернуть в retryWhen ?
источник

AG

Artem Gilmudinov in ReactiveX - русскоговорящее сообщество
и везде у тебя разная логика на случай фейла?
источник

AG

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

AG

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

AG

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

N

Nick Senchurin in ReactiveX - русскоговорящее сообщество
Artem Gilmudinov
и везде у тебя разная логика на случай фейла?
по идее она может быть разной, просто весь вопрос как восстановить выполнение этой цепи с того шага, на кот. я зафейлился
источник

N

Nick Senchurin in ReactiveX - русскоговорящее сообщество
еще нашел, но неужели нет решения проще?  https://medium.com/@scottalancooper/pausing-and-resuming-a-stream-in-rxjava-988a0977b771#.4wqaqcsbe но тут
источник

AG

Artem Gilmudinov in ReactiveX - русскоговорящее сообщество
А как ты цепь строишь?
источник

N

Nick Senchurin in ReactiveX - русскоговорящее сообщество
по определенным правилам, которые я сам задаю (ну вернее по которым это должно все работать).
источник

N

Nick Senchurin in ReactiveX - русскоговорящее сообщество
все эти обсерваблы это обращение к внешнему девайсу. Ну например есть цепочка  enableDevice().getDeviceInfo().callComand() .
Вот например на втором шаге при выполнении getDeviceInfo() я получаю еррор  , который говорит, что если я хочу получить эту инфу, мне например тот внешний девайс надо ребутнуть. т.е первый шаг отработал ок, второй фэйлится -  пользователь видит алерт - типа надо ребутнуть девайс. пока диалог висит, пользователь делает на девайсе ребут, и потом как нажал ок, он выполняет опять getDeviceInfo().callComand() (типа второй шаг) ;
источник

N

Nick Senchurin in ReactiveX - русскоговорящее сообщество
но зафейлиться я могу и на третьем шаге, и тогда после клика по алерту надо выполнить лишь этот последний третий шаг, а первые два как то проскипать
источник

N

Nick Senchurin in ReactiveX - русскоговорящее сообщество
или такие кейсы они вручную разруливаются и на каждый фэйл я руками подбираю новую цепочку обсерваблов для дальнейшего выполнения?
источник

AG

Artem Gilmudinov in ReactiveX - русскоговорящее сообщество
не знаю другого способа кроме как retryWhen после каждого фейла.
getDeviceInfo().retryWhen(errors -> dialogOks).flatMap(device -> callCommand().retryWhen(errors -> dialogOks)).....
источник

N

Nick Senchurin in ReactiveX - русскоговорящее сообщество
в бою все средства хороши ) , если надо после каждого , пусть будет, надо только теперь понять, как этот retryWhen связать с вызовом из диалога.... в общем буду думать над вашим ответом.
источник

AG

Artem Gilmudinov in ReactiveX - русскоговорящее сообщество
если диалог фрагмент то вроде только через publish subject
источник