Articles of rx java2

Номер Android с RxJava обрабатывает пустой результат запроса

Попытка протестировать новую библиотеку Android Room с адаптером RxJava. И я хочу обработать результат, если мой запрос возвращает 0 объектов из БД: Итак, вот метод DAO: @Query("SELECT * FROM auth_info") fun getAuthInfo(): Flowable<AuthResponse> И как я справляюсь с этим: database.authDao().getAuthInfo() .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .switchIfEmpty { Log.d(TAG, "IS EMPTY") } .firstOrError() .subscribe( { authResponse -> Log.d(TAG, authResponse.token) […]

Как протестировать цепочку rxjava?

Привет, я создал реализацию, которая использует flatmap для объединения двух запросов вместе с конечным результатом, являющимся объектом ответа, возвращенным из второго запроса, и задающимся вопросом, можно ли издеваться над этими двумя цепными объектами ответа? Вот основной код delegator.requestOne(requestData) .flatMap ({ response -> if(response.isSuccessful){ cookieStorage.saveSessionCookies(response.header(cookieStorage.COOKIE_HEADER_NAME)!!) } delegator.requestTwo }) .observeOn(AndroidSchedulers.mainThread()) .subscribeOn(Schedulers.io()) .subscribe(object : SingleObserver<ResponseTwo>() { @Override fun […]

Перепишите Java-код в Kotlin, используя функцию Reference, возникает конфликт типов SAM

У меня есть пример кода Java, использующего ссылку на метод, которую я хочу переписать в Kotlin. Java-версия использует ссылку на метод, решение короткое и понятное. Но, с другой стороны, я не могу использовать ссылку на метод в Котлине. Единственная версия, которую мне удалось написать, – это одна из представленных ниже. Кажется, что Function3 { s: […]

Как я могу явно передать завершение Flowable в RxJava?

Я пытаюсь создать Flowable который обертывает Iterable . Я периодически нажимаю элементы на свой Iterable но кажется, что событие завершения неявно. Я не знаю, как сообщить, что обработка завершена. Например, в моем коде: // note that this code is written in Kotlin val iterable = LinkedBlockingQueue<Int>() iterable.addAll(listOf(1, 2, 3)) val flowable = Flowable.fromIterable(iterable) .subscribeOn(Schedulers.computation()) .observeOn(Schedulers.computation()) […]

Ссылка конструктора Котлина с дженериками

У меня этот код в (Rx) Java: Observable.fromArray(1, 2, 3) .flatMap(this::intToBooleanObservable, Pair::new) ….. Я бы ожидал, что соответствующий код Котлина будет выглядеть так: Observable.fromArray(1, 2, 3) .flatMap(::intToBooleanObservable, ::Pair) ….. Однако компилятор не может вывести общий тип пары, поэтому лучшее, что я могу сделать сейчас, это: .flatMap(::intToBooleanObservable, { a, b -> a to b }) Это […]

Как управлять потоком без .flatMap, который разбивает реактивный поток, предотвращающий работу операторов, таких как distinctUntilChanged, от работы со всем потоком

Я хочу обращаться с другой наблюдаемой цепью логики для разных реализаций State . Это может быть легко достигнуто запечатанным классом / алгебраическим типом данных / union + .flatMap() , но это разбивает поток, где такие операторы, как .distinctUntilChanged() работают только в функции .flatMap() , а не на весь поток , sealed class State { object […]

В чем разница между фигурными фигурными скобками и нормальными скобками в RxJava с Kotlin

Я не понимаю реальной разницы между фигурными фигурными скобками и нормальными скобками в Kotlin при использовании RxJava. Например, у меня есть следующий код, который работает как ожидалось: someMethodThatReturnsCompletable() .andThen(anotherMethodThatReturnsACompletable()) .subscribe(…) Но следующее НЕ работает: someMethodThatReturnsCompletable() .andThen { anotherMethodThatReturnsACompletable() } .subscribe(…) Обратите внимание на разницу в части andThen() цепочки с фигурными фигурными скобками. Я не понимаю, […]

Замечание типа Observable.combineLatest в kotlin

Я использую RxJava2, Kotlin-1.1 вместе с RxBindings в моем проекте. У меня есть простой экран входа с отключенной кнопкой входа в систему, я хочу включить кнопку только тогда, когда поля пользователя и пароль не будут пустыми. LoginActivity.java Observable<Boolean> isFormEnabled = Observable.combineLatest(mUserNameObservable, mPasswordObservable, (userName, password) -> userName.length() > 0 && password.length() > 0) .distinctUntilChanged(); Я не […]