2015-03-07 21 views
12

Tôi vừa mới bắt đầu sử dụng rxjava và tôi bị kẹt. Có lẽ tôi không sử dụng rxjava đúng cách, nhưng tôi cần phải thêm các mục vào một Observable sau khi nó được tạo ra. Vì vậy, tôi hiểu rằng bạn chỉ có thể gọi số Observable.just("Some", "Items") và người đăng ký sẽ nhận được chúng, nhưng nếu tôi có tác vụ không đồng bộ và tôi cần phải thêm một số mục khác vào lúc sau khi tác vụ hoàn tất? Tôi không thể tìm thấy bất cứ điều gì như Observable.addItems("Some", "More", "Items")rxjava thêm các mục sau khi có thể quan sát được tạo

Trả lời

21

gì bạn có thể cần Chủ đề là-http://reactivex.io/documentation/subject.html

Nó là một đối tượng mà là cả ObserverQuan sát, vì vậy bạn có thể đăng ký với nó và phát ra mới mặt hàng. Ví dụ:

PublishSubject<String> subject = PublishSubject.create(); 
subject.subscribe(System.out::println); 
subject.onNext("Item1"); 
subject.onNext("Item2"); 
+1

Chính xác những gì tôi đang tìm kiếm ... Tôi bỏ qua lớp này vì lý do nào đó khi tôi đọc tài liệu. Cảm ơn bạn! – Jelly

+0

Nếu điều này không hiệu quả với những người ở kotlin bạn cần làm: 'val subject: PublishSubject = PublishSubject.create ()' – nmu

0

Điều hữu ích cần lưu ý là PublishSubject không lưu vào bộ nhớ cache. Ví dụ nếu mã trên là như sau, Item1 sẽ không được in vì chủ đề chưa được đăng ký. PublishSubject<String> subject = PublishSubject.create(); subject.onNext("Item1"); subject.subscribe(System.out::println); subject.onNext("Item2");

Sử dụng ReplaySubject để lưu vào bộ nhớ cache. Sẽ hữu ích khi đọc this

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