2015-06-10 19 views
9

Các luồng Java 8 Javada có một toán tử peek() cho phép bạn thực hiện một phép toán void trên mỗi mục. Điều này thường được sử dụng để gỡ lỗi, nhưng nó cũng là một cách hay để lừa và khởi động một hoạt động trống mà không cần ánh xạ tới một thứ gì đó.RxJava- thực hiện hoạt động peek() hoặc vô hiệu trong một chuỗi có thể quan sát?

Có tương đương với điều này trong RxJava không? Có lẽ tôi không tuân theo một thực hành tốt hay suy nghĩ phản ứng đủ ... nhưng nó sẽ thực sự tiện dụng để tạo nhãn trạng thái trước và sau một hoạt động? Nếu peek() không được hỗ trợ, có mô hình nào tốt hơn để theo dõi không?

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)); 

Trả lời

9

Có một phương thức doOnNext(Action1<Item> action) sẽ được gọi cho từng mục trong luồng.

Documentation

+0

Làm việc như một sự quyến rũ. Cảm ơn! – tmn

Các vấn đề liên quan