Size: a a a

2017 June 02

N

NoName in RxPM
и от этого же ты меньше не стал писать
источник

N

NoName in RxPM
вродек ак
источник

DG

Dmitriy Gorbunov in RxPM
Метод Create у Relay не аннотирован как NotNull, поэтому котлин думает что там может вернуться null
источник

N

NoName in RxPM
и все это обернули в класс, чтобы потом через точку вызывать
источник

N

NoName in RxPM
правильно ли я понимаю
источник

N

NoName in RxPM
получается для каждого элемента создаем такую обертку и потом юзаем обертку
источник

А

Андрей in RxPM
Dmitriy Gorbunov
Метод Create у Relay не аннотирован как NotNull, поэтому котлин думает что там может вернуться null
Котлин может думать что там нулл, если метод будет аннотироват @Nullable. Если не аннотировано ничем, то будет тип с восклицательным знаком, и разработчик сам решает как его юзать - как nullable или нет.
источник

VC

Vasili Chyrvon in RxPM
Андрей
Котлин может думать что там нулл, если метод будет аннотироват @Nullable. Если не аннотировано ничем, то будет тип с восклицательным знаком, и разработчик сам решает как его юзать - как nullable или нет.
Верно, и придется писать явно тип. И строка становится длинной. И поэтому !! тут просто трейдоф, чтобы не делать длинные строки.
Так читабельнее просто.
источник

А

Андрей in RxPM
Можно и тип явно не писать. Правда в месте объявления переменной будет ворнинг что тип платформенный, и котлиновский помпилятор сам не может определить, является ли тот нул-безопасным.
источник

VC

Vasili Chyrvon in RxPM
Ну да, чтобы вот этот ворнинг не мозолил глаза мы и ставим !! ;)
источник

VC

Vasili Chyrvon in RxPM
Зла тут это не делает, а жизнь упрощает.
источник

DG

Dmitriy Gorbunov in RxPM
Можно еще написать свой экстеншен для создания Relay, который будет не нулл возвращать
источник

DG

Dmitriy Gorbunov in RxPM
NoName
получается для каждого элемента создаем такую обертку и потом юзаем обертку
Да, все правильно. Написал на скорую руку как пример
источник
2017 June 05

N

NoName in RxPM
@dmdev Добрый день, было бы круто, если бы вы в примере, где происходит подписка на клик, добавили обработку исключений. Сейчас, если Ваш интерактор бросит исключение, то цепочка разрывается и больше не сработает в будущем. Я  сам только начал знакомство с Rx и пробую перенести Ваш подход, но этот момент сначала долго не вдуплял, у меня происходит onError, я его корректно обрабатываю (показываю тост), а потом кликаю без толко второй попытки после клика не происходит, потом допедрил, что  onError терминальное состояние и происходит отписка. Как второй раз корректно подписаться не могу понять. попробовал тупо retryWhen( retryHandler -> retryHandler.asObservable), подписка остается, но еперь кнопка срабатывает если ты изменишь и данные в инпутах и нажмешь на кнопку, без имененичя данных не отрабатывпает. Может вы знаете? Я так подозреваю, что  элемент в withLatest как бы обнуляется и команда думает, что из этого Observable не было имита
источник

DG

Dmitriy Gorbunov in RxPM
@crazyk2 Обработка ошибок нетривиальная задача, и в каждом конкретном случае должна обрабатываться индивидуально. Я пытался сделать пример максимально простым, чтобы показать саму суть подхода и не отвлекаться на конкретные детали. В самом простом случае можно применить оператор retry() без параметров. Это как раз подойдет для кликов на кнопки и т. п. После переподписки считайте что это новая цепочка. Сам Relay продолжит свою работу, так как он игнорит ошибки. Скорее всего у вас интпут - это PublishRelay, поэтому withLatest не срабатывает только на клик и ждет события клика и ввода. Вам нужен для инпута BehaviоrRelay - он кеширует последний эмит.
источник

N

NoName in RxPM
либо combineLats().replay()
источник

N

NoName in RxPM
он повторяет после переподписки при retry()
источник

VC

Vasili Chyrvon in RxPM
NoName
либо combineLats().replay()
Повторяет всё, а надо только последнюю. А с replay(1) раньше помню были траблы в самой либе.
источник

VC

Vasili Chyrvon in RxPM
Но может в 2й версии уже все ок
источник

N

NoName in RxPM
ну это я докопал после проб и ошибок, спасибо за behavior по идее должен решить мою проблему, у меня 1(((
источник