Java 8 lambda streams имеют оператор peek()
, который позволяет выполнять операцию void для каждого элемента. Обычно это используется для отладки, но это также хороший способ обмануть и запустить операцию void без сопоставления с чем-то.
Есть ли эквивалент этого в RxJava? Может быть, я не буду следовать хорошей практике или думать достаточно реакционно... но было бы очень удобно создавать статусные ярлыки до и после операции? Если peek()
не поддерживается, следует ли лучше следовать шаблону?
Observable<Item> Item= ...;
Label statusLabel = new Label();
Label resultLabel = new Label();
Observable<CalculatedItem> calculatedItem = calculated.subscribeOn(Schedulers.computation())
.peek(c -> statusLabel.setText("Working.."))
.map(c -> performExpensiveCalculation(c))
.peek(r -> statusLabel.setText(""));
calculatedItem.subscribe(c -> resultLabel.setText(c));