2011-12-10 25 views
12

Tôi có một quan sát nóng (từ một sự kiện) mà tôi đang gọi số DistinctUntilChanged trên đó sẽ có nhiều người đăng ký sẽ đăng ký vào các thời điểm khác nhau sau khi bắt đầu chạy và tạo ra giá trị đầu tiên. Thuê bao sẽ nhận được IObservable thông qua một tài sản trên lớp học của tôi.Làm cách nào để cung cấp giá trị mới nhất của một hot quan sát được khi đăng ký

Làm cách nào để tạo điều kiện để mỗi lần ai đó đăng ký vào quan sát, họ có được giá trị cuối cùng được xuất bản nhưng hành vi có thể quan sát bình thường được không? Tôi nghĩ rằng tôi có thể đang tìm kiếm PublishLast nhưng tôi không chắc liệu nó có tác dụng phụ nào khác hay không.

Câu hỏi tương tự: How do I get an IObservable to push the newest value upon subscription? Đây là một câu hỏi rất giống nhau nhưng nó từ hơn một năm trước và rất nhiều bổ sung đã được thực hiện để Rx vì vậy tôi nghĩ rằng có thể có một chức năng được xây dựng trong bây giờ chứ không phải dựa vào một BehaviorSubject vì vậy tôi không nghĩ rằng điều này là một bản sao chính xác.

Chỉnh sửa:Here is những gì tôi thực sự đang cố gắng thực hiện. Có một bình luận bên dưới trình tự quan sát thực tế mà tôi đang nói đến.

+0

Bạn có thể làm rõ tại sao 'Publish' và' BehaviorSubject' từ các câu hỏi liên quan không được "tích hợp" đủ? Họ làm chính xác những gì bạn dường như đang tìm kiếm. –

Trả lời

8

Câu trả lời khác đã đóng. Bạn hoặc muốn một ReplaySubject (1) tức là chỉ phát lại 1 giá trị; hoặc bạn muốn một BehaviorSubject. Sự khác biệt là Chủ thể Hành vi sẽ yêu cầu giá trị mặc định. Điều này cũng sẽ đảm bảo rằng người đăng ký sẽ luôn nhận được giá trị ngay lập tức.

var replay1 = source.Replay(1); 
replay1.Connect(); 
//Or 
var alwaysHaveValue = source.Multicast(new BehaviorSubject<int>(-1)); 

Để hiểu nhau của Đối tượng kiểm tra Intro to Rx bài của tôi

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