RxJava- 在可观察链中执行 peek() 或 void 操作?

2022-09-02 21:50:40

Java 8 lambda 流有一个运算符,允许您对每个项目执行 void 操作。这通常用于调试,但它也是一种在不映射到某些东西的情况下作弊和启动 void 操作的好方法。peek()

在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

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

文档


答案 2

推荐