2011-12-10 9 views
12

पर एक गर्म अवलोकन योग्य का नवीनतम मूल्य कैसे प्रदान करूं? मेरे पास एक गर्म अवलोकन (एक घटना से) है जिसे मैं DistinctUntilChanged पर कॉल कर रहा हूं जिस पर कई ग्राहक होंगे जो देखने योग्य होने के बाद अलग-अलग समय पर सब्सक्राइब करेंगे और इसका पहला मूल्य बनाया। सब्सक्राइबर्स को मेरी कक्षा की संपत्ति के माध्यम से IObservable मिल जाएगा।मैं सब्सक्राइब

मैं इसे कैसे बना सकता हूं ताकि जब भी कोई व्यक्ति अवलोकन करने के लिए सदस्यता लेता है तो उन्हें अंतिम मूल्य प्रकाशित होता है लेकिन अवलोकन सामान्य रूप से अन्यथा कार्य करता है? मुझे लगता है कि मैं PublishLast की तलाश कर रहा हूं लेकिन मुझे यकीन नहीं है कि इसका दुष्प्रभाव है या नहीं।

इसी तरह के प्रश्न: How do I get an IObservable to push the newest value upon subscription? यह एक बहुत ही समान सवाल है लेकिन यह एक साल पहले से है और आरएक्स को बहुत सारे जोड़ दिए गए हैं, इसलिए मुझे लगता है कि BehaviorSubject पर भरोसा करने के बजाय अब एक अंतर्निहित कार्य हो सकता है, इसलिए मुझे यह नहीं लगता एक सटीक डुप्लिकेट है।

संपादित करें:Here is जो मैं वास्तव में करने की कोशिश कर रहा हूं। वास्तविक अवलोकन योग्य अनुक्रम के बारे में एक टिप्पणी है जिसके बारे में मैं बात कर रहा हूं।

+0

आप स्पष्ट कर सकते हैं क्यों 'Publish' और जुड़ा हुआ सवाल से' BehaviorSubject' नहीं "निर्मित" कर रहे हैं पर्याप्त? वे ठीक वही करते हैं जो आप खोज रहे हैं। –

उत्तर

8

दूसरा उत्तर करीब था। आप या तो एक ReplaySubject (1) यानी केवल 1 मान replay चाहते हैं; या आप एक व्यवहार विषय चाहते हैं। अंतर एक व्यवहार विषय को एक डिफ़ॉल्ट मान की आवश्यकता होगी। इससे यह भी गारंटी मिलेगी कि ग्राहक हमेशा एक मूल्य प्राप्त करेंगे।

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

को समझने के लिए विषयों में से प्रत्येक मेरी Intro to Rx पद की जाँच

संबंधित मुद्दे

 संबंधित मुद्दे