Giả sử tôi có hai Đài quan sát vô hạn có thể phát ra các giá trị tại bất kỳ thời điểm nào. Chúng kết hợp để tạo ra một Observable<ProcessFileEvent>
.RxJava- CombineLatest nhưng chỉ cháy cho một phát xạ của Observable?
Observable<Integer> selectedFileId= ...
Observable<MouseClick> buttonClick = ...
Observable<ProcessFileEvent> `processFileEvent` = Observable.combineLatest(selectedFileId, buttonClick, (s,b) -> {
//create ProcessFileEvent here
});
Vấn đề là tôi chỉ muốn processFileEvent phát ra khi buttonClick
phát ra một cái gì đó, không selectedFileId
. Đó chắc chắn không phải là hành vi mà người dùng mong đợi khi ID tệp được nhập và nó khởi động ProcessFileEvent
. Làm cách nào để kết hợp nhưng chỉ phát ra khi phát ra buttonClick
?
Điều này có ý nghĩa. Một câu hỏi nhanh. Có 'khác biệt()' dựa vào 'hashcode()/equals()' cho mỗi mục phát ra hay không nó ngăn chặn các chuỗi dupe? – tmn
một HashSet được sử dụng trong nội bộ. Nếu bạn đã thực hiện hashCode()/equals() cho MouseClick thì nó tốt hơn là những gì bạn muốn. Nếu bạn chưa thực hiện chúng thì nó sẽ chỉ sử dụng đối tượng tham chiếu bình đẳng. Oh, đây là overkill tôi chỉ nhận ra chúng ta cần phải sử dụng distinctntntChanged. Tôi sẽ cập nhật. –
Bây giờ, tính năng này không được sử dụng, không có HashSet được tham gia nhưng phương thức equals() được sử dụng để kiểm tra riêng biệt, do đó bạn vẫn cần hàm hashCode()/equals() hoạt động như mong muốn. –