RxJava-在Observable链中执行peek()或void操作?

时间:2015-06-10 15:27:45

标签: java reactive-programming rx-java

Java 8 lambda流有一个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));

1 个答案:

答案 0 :(得分:14)

将为流中的每个项目调用方法doOnNext(Action1<Item> action)

Documentation