Pull to refresh

Comments 13

Какую литературу/статьи можно почитать, чтобы также познать «реактивный подход»? )
Во многих случаях мое использование Rx скатывается в императивный подход и при чтении подобных статей у меня возникает вопрос: «А что и тут так надо?»
Сложно посоветовать какую-то литературу, потому-что большинство материалов, вроде «RxJava for Android App Development» — K. Matt Dupree, покрывает только самый базовый уровень (хотя именно эту 30 страничную брошюру стоит пробежать, там популярная реактивная обёртка на SearchView продемонстрирована).
Самым эффективным способом будет идти по официальной документации, брать каждый оператор и гуглить отдельно по нему небольшие статьи: «rx debounce usage android», «rx compose transformers usage android».
Очень много годноты находится на хабре и медиуме.
Позже, когда документация, диаграммы из неё и десятки прочитанных примеров врежутся в память, мозг сам начнет выдавать тонны (часто нерабочих) способов переделать собственный код и реализовать какую-то привычную штуку через Rx )
можете глянуть тут http://xgrommx.github.io/rx-book/content/resources/articles/index.html Если у кого-то есть время может сгруппировать по языкам
Могу порекомендовать книгу «Нуркевич, Кристенсен: Реактивное программирование с использованием RxJava». В ней достаточно подробно описаны операторы + приведены примеры по их использованию.
Надо уточнить, что примеры работают только для версии 2.
Имеете ввиду Rx2? Как раз наоборот, работают на Rx1, для миграции на Rx2 нужно не эмитить нуллы, а создавать класс RetryEvent, о чем я написал в середине статьи. Подозреваю, что-то еще придется менять, так как примеры чисто на первой версии писал.
В версии 1.2.9 (видимо, крайняя на данный момент) у Single нет метода repeatWhen, только retryWhen.
И еще
repeatWhen(repeatHandler -> repeatHandler.flatMap(nothing -> updateSubject.asObservable()))
можно сократить до
repeatWhen(updateSubject)
Нeльзя, во-пeрвых, там сигнатура Func1<Ovservable, Observable>, поэтому как минимум repeatWhen(error -> repearSubject.asObservable()).
Во-вторых, спецификация обязывать возвращать подстрим данного notificationHandler'а. Пeрeданный туда сторонний статичный стрим работать нe будeт.
Можно-можно, у меня это работает.
PublishSubject наследник Observable, asObservable() делает явное приведение типа, но проканает и неявное.
А спецификация обязывает возвращать Observable. Другое дело, что handler служит как бы сигналом, что очередная последовательность закончилась, и по нему можно синхронизировать эмитирование из возвращаемого Observable. Но в этом случае можно использовать BehaviorSubject, который отдает последний эмит новому подписчику. Тогда даже если вызов update() произойдет пока getSomething() еще не вернул результат, то replayWhen(updateSubject) сразу приведет к переподписке на getSomething.

Из определения repeatWhen этого явно не вытекает, поэтому спрошу:
У меня есть API запрос (запрос с боди, в котором две строки — А и Б), и по логике задачи после удачного запроса я должен обновлять эти самые А и Б.
Если я вешаю на этот API запрос повтор с отсрочкой на определенное время, то у меня этот самый запрос при повторе будет отправлять исходные А и Б? или обновленные?

Sign up to leave a comment.

Articles