RxJava Flashcards
Какой класс предпочтительно использовать использовать для тестирования RxJava?
TestSubscriber
Какие преимущества дает TestSubscriber по сравнению с традиционным тестированием?
Традиционный подход - упускает одно из самых больших преимуществ RxJava - обработка событий в отдельных потоках.
RxJava поставляется с классом TestSubsriber, который позволяет нам писать тесты, которые работают с асинхронной обработкой событий.
Что такое RxJava
Rx – это мощный инструмент, который позволяет решать проблемы в элегантном декларативном стиле, присущем функциональному программированию.
Какие свойства есть у Библиотеки RxJava?
- Интуитивность
Действия в Rx описываются в таком же стиле, как и в других библиотеках вдохновленных функциональным программированием, например, Java Streams. Rx дает возможность использовать функциональные трансформации над потоками событий.
-Расширяемость
RxJava может быть расширена пользовательскими операторами.
-Декларативность
Функциональные трансформации обьявлены декларативно.
-Компонуемость
Операторы в Rx легко компонуются, чтобы проводить сложные операции.
-Преобразуемость
Операторы в Rx могут трансформировать типы данных, фильтруя, обрабатывая и расширяя потоки данных при необходимости.
Когда следует использовать Rx?
Rx применяется для составления и обработки последовательностей событий.
Следует использовать Rx
- UI события, такие как mouse move, button click
События вроде изменения свойства, обновления коллекции, «Заказ оформлен», «Регистрация закончена» и т.д. - Инфраструктурные события (сообщения от системы, WMI или файловых менеджеров)
- Интеграция с событиями от шины сообщений (message bus), сообщениями из WebScoket API
- Интеграция с CEP-системами (StreamInsight, StreamBas)
- Результат Future или похожего паттерна
Когда не следует использовать Rx?
Для превращения Iterable в Observable только для того, чтобы работать с ними через библиотеку Rx.
Основные типы RxJava?
Какие типы добавили в RxJava2?
Signle, Observable и Observer, Flowabble,Subjects и Processors, Subscriber и Subscription, Maybe
Как RxJava 2 обрабатывает Null
RxJava 2.x больше не приемлет значения NULL, и следующий код приведет к немедленному получению NullPointerException, или Emitter(порождающий поток) выбросит onError-событие.
В чем разница между Observable и Flowable?
Observable — класс без покрытия backpressure, а Flowable наделен backpressure. Backpressure(Обратное давление) — явление, которое можно встретить в порождающем потоке, где некоторые асинхронные операции не могут обрабатывать значения достаточно быстро и нуждаются в замедлении работы производителя.
когда юзать Observable
Observable -В тех кейсах, когда у вас в итерации, не более 1000 элементов. В остальных flowable
Какой тип хорошо подходит для обработки одиночного сетевого запроса?
Signle
Что делает unsubscribe? Когда его применять?
Вызов unsubscribe остановит поступление событий в observer.
Что делает Observable.interval?
Эта функция создаст бесконечную последовательность значений, отделенных заданным интервалом времени.
Что делает Observable.range?
Выдает значения из заданного диапазона.
Можно ли применять unsubscribe к Single? Почему
Да т.к. неизвестно когда Single получит результат.