Каждый раз когда берусь за RxJava я это забрасываю, так как не понимаю, зачем писать больше кода. Касательно Flowable Элементарный Hello world выглядит дурно, вот так мы писали раньше
System.out.print("Hi, Rx");
А сейчас такую вот дичь в 7 строк.
Flowable.just("Hi, Rx")
.subscribe(new Consumer<String>() {
@Override
public void accept(String s) {
System.out.println(s);
}
});
Даже если использовать лямбды, зачем вообще так делать? Неужели нельзя просто написать
System.out.println("Hi, Rx");
Во-первых, не надо писать дичь в 7 строк, достаточно одной:
Flowable.just("Hi, Rx").subscribe(System.out::println);
Во-вторых, не стоит ориентироваться на Hello World. Реактивное программирование придумано для сложный вещей, в сложных вещах и блистает. Попробуйте переписать в императивном стиле что-нибудь вроде
public Observable<String> send(String command) {
return Observable.just(command)
.doOnNext(cmd -> checkConnection())
.map(cmd -> cmd.getBytes())
.map(bytes -> addHeader(bytes))
.map(bytes -> sendBytes(bytes))
.timeout(MAX_SEND_TIMEOUT_MS, TimeUnit.MILLISECONDS)
.map(result -> readAnswer())
.doOnError(throwable -> disconnect())
.retry(MAX_RETRY_COUNT)
.subscribeOn(Schedulers.io());
}
и посчитайте количество получившихся строк. Код взят из статьи "Несколько примеров практического использования RxJava". На Хабре немало статей доходчиво объясняющих назначение RxJava.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости